C# 确定点周围的三角形点
我在.NET中开发了一个应用程序,可以画一些线。 在直线的中间,我需要画线方向数组。 有:C# 确定点周围的三角形点,c#,geometry,C#,Geometry,我在.NET中开发了一个应用程序,可以画一些线。 在直线的中间,我需要画线方向数组。 有: (xA,yA,xB,yB)或(pA,pB)-段AB点 arrWidth、arrHeight-箭头尺寸 >B-箭头方向 需要: 3个新的点 PARR1,PARR2,PARR3指向箭头的点,应该位于段 AB < /代码>的中间。< /P> 首先,我将给出一些定义 让我们: p=线尾的位置向量 v=线向量 h=箭头高度 w=箭头宽度 L=逆时针旋转90度 那么你的三点是: p+(|v |/2-h/2+w/2
(xA,yA,xB,yB)
或(pA,pB)
-段AB
点arrWidth、arrHeight
-箭头尺寸>B
-箭头方向
需要:3个新的点<代码> PARR1,PARR2,PARR3指向箭头的点,应该位于段<代码> AB < /代码>的中间。< /P>
首先,我将给出一些定义 让我们:
- p=线尾的位置向量
- v=线向量
- h=箭头高度
- w=箭头宽度
- L=逆时针旋转90度
你能更清楚一点你需要什么吗?这可能不是一个数学问题。@picakhu:更新了图纸。我希望你意识到你的问题仍然不清楚。1。方向。2.箭头的大小。3.这和数学有什么关系。因为我不是真正的数学家,你能“规范化”你的公式,以便被一种编程语言使用吗?就像用罪恶,因为,等等…我还是不明白。。。在C#中没有向量的概念,例如。。。你能不使用矢量来表示它吗?谢谢。这正是以“pArr1=”开头的代码片段的目的。这应该是有效的C#,前提是声明了pArr1,并且您已将px、py、vx、vy和v初始化为指定的值。初始化了问题变量后,这实际上是在.NET 4下编译的谢谢,你是个天才!我只是替换了[] PAR<代码> var PARR1=新点(< /代码>,因为我在WPF中:)
// assuming xA, yA, xB, yB, arrWidth, arrHeight are initialised
var xV = xB - xA;
var yV = yB - yA;
var v = Math.Sqrt(xV*xV + yV*yV);
var pArr1 = new[] {
xA + xV / 2 - xV * arrHeight / (2 * v) - yV * arrWidth / (2 * v),
yA + yV / 2 - yV * arrHeight / (2 * v) + xV * arrWidth / (2 * v) };
var pArr2 = new[] {
xA + xV / 2 - xV * arrHeight / (2 * v) + yV * arrWidth / (2 * v),
yA + yV / 2 - yV * arrHeight / (2 * v) - xV * arrWidth / (2 * v) };
var pArr3 = new[] {
xA + xV / 2 + xV * arrHeight / (2 * v),
yA + yV / 2 + yV * arrHeight / (2 * v) };