圆的2D位置,用于在OpenSCAD中舍入一个角度

时间:2017-04-05 10:30:43

标签: geometry rounding angle openscad

我知道以下内容:

  • P(x,y坐标)。
  • A1和A2(以度为单位的角度)
  • R(圆的半径)。

... See attached image.

现在我需要计算一个绿色圆圈的中心,以使它“变成红褐色”?两条蓝色线条(稍后将用其他形状进行minkowski,以形成圆角三角形)。

任何帮助将不胜感激!

我描述的示例的代码:

//KNOWNS
P=[-3.0,1.0,0.0];
A1=60; A2=-5;
R=5;

//UNKNOWN
SECRET_CALCULATION = [8.2,4.3,0];//???

//ILLUSTRATION
C0=[0,0,0,1]; C1=[0,1,1,0.3]; C2=[0,1,0,0.4]; C3=[1,0,0,0.4];//Colors
translate(P){
    color(C1) rotate(A1) translate([0,-0.5,0]) square([250,1],0);
    color(C1) rotate(A2) translate([0,-0.5,0]) square([250,1],0);
    color(C2) translate(SECRET_CALCULATION) circle(R);
}


//EXPLANATIONS
color(C0) translate(P) {
    translate(SECRET_CALCULATION){
        translate([0,-0.2,0]) square([R,0.4],0);
        translate([R+1,0,0]) rotate(-90) text(str("R:",R),halign="center",valign="top",0.75);
        translate([0,0.2,0]) text("[x?,y?,0]",halign="center",valign="bottom",0.75);
    }
    rotate(((A1-A2)/2)-90) translate([0,-1,0]) text(str("P: ",P),halign="center",valign="top",0.75);
    rotate(A1) text(str("    A1: ",A1,"°"),halign="left",valign="center",0.75);
    rotate(A2) text(str("    A2: ",A2,"°"),halign="left",valign="center",0.75);
}

1 个答案:

答案 0 :(得分:0)

圆心位于光线A1和A2的平分线上。所以我们可以找到这个平分线的方向

B = (A1 + A2) / 2        = 27.5 here

(但不要忘记角度归一化 - 角度-5可能表示为355等等)

平分线与A1A2之间的角度为

D = (A1 - A2) / 2         = 32.5 here

我们可以看到点C(enter)-T(angentpoint)-P与关系

形成直角三角形
L (P-C, DistAlongBisector) = R / Sin(D) 

所以我们可以找到中心坐标为

 C.X = P.X + Cos(B) * L
 C.Y = P.Y + Sin(B) * L

快速手动检查

L=5/Sin(32.5)=9.3
C.X = -3 + Cos(27.5)*9.3 = 5.24
C.Y = 1 + Sin(27.5)*9.3 = 5.3