我正在开发图形应用程序。在应用程序窗口中有由边缘连接的顶点。用户可以移动顶点,并且边缘也移动。我有问题找到模式来绘制箭头表示边缘方向取决于两个顶点的位置。绘制边缘方向的算法
下面是一个例子。
可以说顶点有边缘从Vertex1的中心绘制到Vertex2的中心。
Vertex1.position = new Point(0,0);
Vertex2.position = new Point(100,0);
Edge.point1 = new Point(10,10);
Edge.point2 = new Point(110,10);
//Arrow representing direction from Vertex1 to Vertex2
Arrow.point1 = new Point(100,10);
Arrow.point2 = new Point(90,20);
Arrow.point3 = new Point(90,0);
问题是:知道边缘开始/结束点的位置,如何计算箭头点?
1)定义相对于点(顶部)的径向项(角度/距离)的箭头点,2)计算连接顶点的矢量的角度(角度与x或y轴无关), 3)根据你使用的角度,从中增加或减去你的箭头点角度,4)使用sin和cos,计算每个箭头(左右)点的顶部箭头点的x和y偏移量,5)add这些值的顶部箭头点 – neeKo 2011-12-18 19:44:21