如何跟踪具有2个连锁轴的超椭圆路径

时间:2016-04-14 17:52:39

标签: algorithm linear-algebra computational-geometry graph-algorithm trigonometry

我有两个轴连在一起;轴A和轴B.轴B连接到轴A的末端,因此其原点可随轴A的角度而变化。连接到轴B的是圆,其直径为10(并且可以变小)。我需要移动圆的边缘点以在38个笛卡尔点x,y中的每一个处与超椭圆相交。因此,我的轴B的终点 - 圆的中心应遵循与超椭圆的38个点相同的基本路径 - 圆的半径。一旦我有这些点 - 我将需要确定轴A x_2,y_2和角度的位置(或者更恰当地确定从0度角到达所需角度到位置x_2,y_2的距离。然后我需要定位轴B与轴A相关,为了使轴B X_3,Y_3与超椭圆的跟随中心相匹配。

我附上了一张图纸,并在Excel中有一个情节,我不在,因为你可以看到领结不是我应该拥有的。我还将点包括在超椭圆上以及图上的一些快速点。我不是数学专业 - 我愿意学习如果你发表一个方程式的名字 - 到目前为止我已经了解了carnot,圆形参数方程和抛物线公式 - 但我仍然遇到麻烦。

Graphical Representation of the Problem Excel Layout of plotting points - the inner path is not properly followed.

Axis A Radius 13" image is 90 degree rotation
X_Sub1 , Y_Sub1 
-6.5   , 5

Axis B Radius 9" image is 180 degree rotation
X_Sub2 , Y_Sub2 
 6.5   , 5

Circle Diameter 10" 
Circle Radius 5" 

Super Ellipse 
@ 12"width
@ 8.75" Deep Vertex -8.75

Points Along the Super Ellipse.
0.0000,  0.0000
0.2188, -0.6250
0.2188, -1.2500
0.2433, -1.8750
0.3290, -2.5000
0.4753, -3.1073
0.6804, -3.7091
0.9424, -4.2990
1.2585, -4.8712
1.6255, -5.4197
2.0397, -5.9388
2.4967, -6.4233
2.9920, -6.8682
3.5203, -7.2889
4.0764, -7.7213
4.6544, -8.0500
5.2285, -8.3553
5.7525, -8.5000
6.2188, -8.5516
6.6851, -8.5000
7.1891, -8.3553
7.7832, -8.0500
8.3612, -7.7213
8.9173, -7.2889
9.4456, -6.8682
9.9409, -6.4233
10.3979,-5.9388
10.8121,-5.4197
11.1791,-4.8712
11.4952,-4.2990
11.7572,-3.7091
11.9623,-3.1073
12.1086,-2.5000
12.1943,-1.8750
12.2188,-1.2500
12.2188,-0.6250
12.4376, 0.0000

1 个答案:

答案 0 :(得分:0)

首先,假设我们在超椭圆上有3个点,p0 = (2.4967, -6.4233)p1 = (2.9920, -6.8682)p2 = (3.5203, -7.2889)。让我们弄清楚如何定位它以触及p1点。

首先,在p1点处,切线应非常接近于从p0p2的线。所以它应该与p2 - p0 = (3.5203, -7.2889) - (2.4967, -6.4233) = (1.0236, -0.8656)平行。但是你希望磁盘与此垂直。我们可以通过(x, y)构建与向量(-y, x)垂直的垂直方向,它将(0.8656, 1.0236)作为方向。 (有两个垂线,看图表显然是正确的。)这意味着我们想要将轴B的末端放在5的那个方向上。这意味着5(0.8656, 1.0236) p1 = (2.9920, -6.8682)的距离(2.9920, -6.8682) + 5 * (0.8656, 1.0236) / sqrt(0.8656^2 + 1.0236^2) = (6.22057, -3.050307)。所以它应该在{{1}}的位置。

现在我们知道轴B的末端在哪里,假设我们知道轴A的起点在哪里(你没有指定),我们可以使用余弦定律(见http://mathworld.wolfram.com/LawofCosines.html )找出你想要的角度的cos。现在你可以使用反余弦函数来计算出有问题的角度。

每个点都可以遵循此程序。弄清楚你认为它应该与之相切,找到正交,找到你想要B的末端的位置,然后你有一个三角形,你可以使用余弦定律。