我有一个创建曲线的点。然后我创建另一个两个数组:左,右,这应该是我的中间曲线的边界(它们由+/- x'es只修改了),就像这样:围绕另一个点和X轴的旋转点
在结束我想有这样的事情:
我试图做的是通过旋转左,围绕中心点右键点(由红色线),但它不为我工作很好。
static Point Rotate(Point p, Point o, double theta)
{
Point rotated = new Point();
double x = Math.Cos(theta) * (p.X - o.X) - Math.Sin(theta) * (p.Y - o.Y) + o.X;
rotated.X = (int)Math.Round(x);
double y = Math.Sin(theta) * (p.X - o.X) + Math.Cos(theta) * (p.Y - o.Y) + o.Y;
rotated.Y = (int)Math.Round(y);
return rotated;
}
余数从红线点之间的角度。
float xDiff = finalList[finalList.IndexOf(row) + 1][0].x - point.toPoint().X;
float yDiff = finalList[finalList.IndexOf(row) + 1][0].y - point.toPoint().Y;
angle = Math.Atan2(yDiff, xDiff) * 180.0/Math.PI;
angle = Math.Abs(angle) - 90d;
如何获取左,右点阵列正确?也许有另一种方法来绘制可定制的边界曲线?我需要这个绘制图表。任何帮助将不胜感激:)
编辑:我得到的角度似乎没问题,在线的底部约10度,然后提高到50左右,再次减少,所以我认为问题是在旋转本身。
它看起来像你试图执行翻译而不是旋转? 否则,如果您可以更改分层和线条宽度,则可以将黑线的宽度设置为红线的两倍,然后在同一点上绘制黑线和红线。这样红色两边就会有一点黑色。 –
我不能这样做,例如,红线的颜色可以设置为半透明。 – user3716478