例如,绘制一个这种三角形,我这里不特定指出Unity Editor ,他是一种数学知识。

例如,如图,先求出线段中心点c,然后指定一个边长 = m, 沿线段方向增加m距离,得到第一个点v0,同理,反向减少m距离得到x,然后让x沿垂直线段两边走m,得到其他两个点,三角形就绘制出来了。
然后求一条线段的另外一条垂直线段的方向有一个比较容易的解决办法是叉乘,把一条线段看成x轴,另外一条看成y轴,计算x和z的叉乘就得出y的方向出来了。
我还是简单贴一段我项目中用过的代码吧。

     protected override void OnGUI(){Texture2D connectionTexture = (Texture2D)UnityEditor.Graphs.Styles.connectionTexture.image;Handles.color = curState.curSelLinkItem == this ? Color.red : Color.white;Vector2 start = begin.ToPivot();Vector2 pEnd = end.ToPivot();Handles.DrawAAPolyLine(connectionTexture, 4f, new Vector3[] { start, pEnd });Vector3 cross = Vector3.Cross((start - pEnd).normalized, Vector3.forward);Debug.LogError($"cross:{cross} - {start-pEnd} - {Vector3.forward}");Vector3 diff = (pEnd - start);         Vector3 direction = diff.normalized;Vector3 mid = ((0.5f * diff) + new Vector3(start.x,start.y,diff.z)) - (0.5f * cross);Vector3 center = mid + direction;DrawArrow(cross, direction, center, Handles.color);}private void DrawArrow(Vector3 cross, Vector3 direction, Vector3 center, Color color){const float sideLength = 6f;Vector3[] vertices = new Vector3[] {center + (direction * sideLength),(center - (direction * sideLength)) + (cross * sideLength),(center - (direction * sideLength)) - (cross * sideLength)};UseLinkArrowMaterial();GL.Begin(vertices.Length + 1);GL.Color(color);for (int i = 0; i < vertices.Length; i++){GL.Vertex(vertices[i]);}GL.End();}private void UseLinkArrowMaterial(){if (linkArrowMaterial == null){var shader = Shader.Find("Lines/Colored Blended") ?? Shader.Find("Legacy Shaders/Transparent/Diffuse") ?? Shader.Find("Transparent/Diffuse");if (shader == null) return;linkArrowMaterial = new Material(shader);}linkArrowMaterial.SetPass(0);}

《Unity》如何在任意一条线段中心上绘制一个三角形。相关推荐

  1. 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。

    题目:平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小. 源码如下: 1 #include <iostream> 2 #include <string.h> 3 ...

  2. n条线段可以组成多少种三角形

    题目描述 Ocean最爱三角形,现在Ocean手里有n条线段,Ocean现在想知道,这n条线段可以组成多少种三角形. 输入 一个整数n (3≤n≤3000) 接下来n 个整数x(1≤x≤10000) ...

  3. 【原创】如何判断三条边能否构造出一个三角形

    一.三角形的定义 众所周知,三角形是由不在同一直线上的三条线段首尾顺次连接所组成的封闭图形. 常见的三角形按边分有普通三角形(三条边都不相等),等腰三角(腰与底不等的等腰三角形.腰与底相等的等腰三角形 ...

  4. android小球移动代码,Android中如何绘制一个跟随手指移动的小球

    Android中如何绘制一个跟随手指移动的小球 发布时间:2020-11-07 16:22:43 来源:亿速云 阅读:82 作者:Leah 本篇文章为大家展示了Android中如何绘制一个跟随手指移动 ...

  5. C#中如何绘制一个四分之一的圆锥

    C#中如何绘制一个四分之一的圆锥 思路:在C#中有自带的绘制圆锥的方法, ConeElement coneElementLeft = new ConeElement(DgnModel dgnModel ...

  6. canvas绘制四分之一圆_canvas中怎么绘制一个扇形?四分之一圆.

    2016-01-13 回答 在html5 canvas 中,我们可以通过 arc 方法来绘制圆形: // context.arc(x, y, r, sangle, eangle, counterclo ...

  7. 在D3D中绘制一个三角形的一个完整过程(学习3D游戏笔记一)

    本笔记是基于Microsfot DirectX 9.0 SDK Update的SimpleSample生成的框架. 在3D场景中,所有的对象和模型均由三角形构成;而三角形由三个顶点构成;每个顶点不仅包 ...

  8. 小猪佩奇python_「小猪佩奇头像」使用python中turtle绘制一个小猪佩奇的头像 - seo实验室...

    小猪佩奇头像 之前一直被佩奇的预告片刷屏,就想着用Python中的turtle模块来自己绘制一个海报目前完成了一个头,代码如下:之后会更新整幅图from turtle import * def eye ...

  9. MATLAB中如何绘制一个球

    在看到surf函数时,surf的MATLAB帮助文档中,有绘制一个球,所以想用MATLAB绘制一个球. 主要使用到sphere函数. sphere(n);绘制球的表面图,球由n*n个面组成. sphe ...

最新文章

  1. 【Sql Server】DateBase-自动化
  2. C++派生类构造函数调用规则
  3. Smartform中如何设置背景阴影色(Shading)
  4. 网络流(3)——找到最小st-剪切
  5. 关于mysql数据库的备份和还原
  6. 2019黑马python面试资料_2019最新Python黑马头条推荐系统项目
  7. python s d是什意思_python里d是什么意思
  8. android monkey优化,GitHub - baozhida/AndroidMonkey: 这个项目是CrashMonkey4Android可执行文件,修复了一些bug,做了一些优化...
  9. linux 事实日志_Linux是25。是的! 让我们用有关Linux的25个令人震惊的事实来庆祝。
  10. 云小课|ModelArts Pro 视觉套件 零代码构建视觉AI应用
  11. linux的文件打包与压缩
  12. oracle添加字段sql_如何用SQL语句添加和修改字段?
  13. 联发科正式发布Helio P23/P30 SoC:GPU、基带大升级
  14. mysql创建、修改、删除索引和主键
  15. vue2和vue3响应式原理
  16. 第二阶段--团队冲刺--第五天
  17. java中Hashset集合删除元素_从Java中的HashSet中删除单个元素
  18. 基于网络爬虫的负面信息搜集系统
  19. MongoDB 聚合 aggregate 的 match 和 project 阶段样例
  20. 哈里斯鹰优化算法(HHO)附matlab code链接

热门文章

  1. 科创人·弘玑Cyclone CEO高煜光:从RPA到超自动化,以客户需求构建战略纵深
  2. Android apk增量升级
  3. 清泉HAL库开发STM32之基础概念
  4. 解决windbg双机调试win7win10及以上会输出SXS.DLL的垃圾信息
  5. openwrt 3G驱动
  6. 王永庆的鱼骨理论经营之道
  7. 内连接与外连接的时候场景
  8. 从Excel 到微服务
  9. 十年一觉扬州梦,赢得青楼薄幸名
  10. 迅雷创业与生存密码(节选自网络)