如何将直角坐标外摆轮线图转换为pascalABC中的极坐标?

问题描述 投票:0回答:1

对于我的学生项目,我需要创建 pascalABC.NET 程序,在笛卡尔和极坐标系中制作外轮线图。我为笛卡尔系统编写了一些简单的代码,它似乎工作得很好,我现在如何将它转换为极坐标系?我可以在这个程序中使用极坐标系中的外旋轮线的数学方程吗?希望有人能帮助我:)

我为笛卡尔系统编写的代码:

uses graphABC;
var c,x,y:integer;
r1,r2,m,h,t,ms:real;
begin
setwindowsize(500,500);
centerwindow;
c:=250;
r1:=1;
r2:=0.2;
m:=r2/r1;//m=0.2
h:=0.3;
ms:=(c-50)/(r1+2*r2);
setpenwidth(2);
setpencolor(clGreen);
circle(c,c,round(r1*ms));
setpencolor(clRed);
t:=0;
while t<=360 do
 begin
  x:=c+round((r1*(m+1)*cos(m*t)-h*cos((m+1)*t))*ms);
  y:=c-round((r1*(m+1)*sin(m*t)-h*sin((m+1)*t))*ms);
  if t=0 then moveto(x,y) else lineto(x,y);
  t:=t+0.1;
 end;
end.

Thats how graph looks in Cartesian system

math geometry polar-coordinates cartesian-coordinates pascalabc.net
1个回答
0
投票

您无法为外旋轮线构建显式函数

ro(theta)

可以为

ro(t)
参数制作
theta(t)
t

ro = sqrt(x^2 + y^2)
theta = arctan2(y, x)

其中

x, y
是类似于您的
r1*(m+1)*cos(m*t)-h*cos((m+1)*t))*ms

的表达方式

外摆线公式推导示例
以及 外旋轮线

的结果

在我看来似乎有点不自然......

问题 - 很难通过

theta
获得等距点,还要注意一个
theta
值可能对应于两个
ro
值(在您的图片中循环)。

© www.soinside.com 2019 - 2024. All rights reserved.