赫罗
这是我第一次在这里发帖 我是C#的新手,但是我遇到了困难
在你会发现的插图中 弧的坐标 所有积分均来自(0,0) X轴是水平的 Z轴是垂直的
http://i.stack.imgur.com/ycmdi.png
输入变量:
Xo,Zo =(529.819,343.509)
Xn,Zn =(529.26,343.678)
R(Radius) =(9.2)
我需要I,K的坐标(Centrer Point,参考0,0)
对我的回答,K是(I532.2,K352.396) 但我想知道如何计算这个
这将在G代码转换中使用 例如:
N8(3)X529.819Z343.509$
N9(4)X529.26Z343.678R9.2C0$
要
N8(3)X529.819Z343.509$
N9(4)X529.26Z343.678I532.2K352.396$
(C0& C1为CW& CCW)
答案 0 :(得分:2)
我很久以前写过的一些VB6代码的复制/粘贴,它每天都在很多机器上运行。它通过将坐标系旋转两点之间的角度来工作,从而大大简化了数学运算。 Tangent()返回角度,Rotate()旋转一个点,Sqr()是C#中的Math.Sqrt():
'--- Compute arc center from radius
Dim tang#, w#
tang = co1.Tangent(co2)
co2.Rotate co1, -tang
center.X = (co1.X + co2.X) / 2
center.Y = 0
w = center.X - co1.X
If Abs(mModal.RWord) < w Then
'--- R-word too small
If mModal.ThrowErr And w - Abs(mModal.RWord) > 0.00
Err.Raise 911, , "R-word too small"
End If
Else
center.Y = -Sqr(mModal.RWord * mModal.RWord - w * w
End If
'--- Choose out of the 4 possible arcs
If Not cw Then center.Y = -center.Y
If mModal.RWord < 0 Then center.Y = -center.Y
center.Y = center.Y + co1.Y
center.Rotate co1, tang
co2.Rotate co1, tang
GetArcCenter = center