5800交点正反算坐标(可计算不对称缓和曲线)

  

FX5800计算器交点法正反算程序

输入图纸中的整个标段交点要素,输入桩号及距中桩距离正算本标段任意点坐标,及极坐标放样的方位角及距离;由输入大概桩号及实测坐标,反算准确桩号及距中桩距离。(绿色为程序名,蓝色为输入计算器里的内容)

  1. 主程序

程序名:1XY-KM

LbI 0:7→DimZ:Norm 2:1→A:"A:X,Y=1,KM,D=2"?A:

A=1=>Goto 1:A=2=>Goto 2:LbI 1:Z[4]→K:Z[5]→L:“XZ”?K:”YZ”?L:K→Z[4]:L→Z[5]:LbI A:Prog"QX":90→B:"PJ"?B:B→Z[1]:LbI B:"KM"?Z:Z= -1=>Goto 0:Z=-2=>Goto A: Prog"X1":?D: Prog "Z":I+D×COS(Z[2]+Z[1]→X: J+D×Sin(Z[2]+Z[1]→Y: Fix 3:"   X=":Locate 6,4,X:"   Y=":Locate 6,4,Y:Prog"JS":Goto B:

LbI 2:Prog"QX":"KM"?Z:LbI C: Prog"X1": "XO"?X:X=-1=>Goto 0:X=-2=>Goto 2: "Y0"?Y:Prog "ZX": Fix 3:" KM=":Locate 6,4,Z:"  D=":Locate 6,4,D:Goto C

2. 交点法正算子程序(Z)

程序名:Z

H2÷R÷24-H(4)÷2688÷R(3)→A:H÷2-H(3)÷240÷R2→B:((H2-N2)÷24÷R÷Sin(Abs(P))-((H(4)-N(4))÷2688÷R(3))÷Sin(Abs(P→E:(R+A)tan(Abs(P)÷2)+B-E→T:P÷Abs(P→W:0→M:H→C: R+N2÷R÷24-N(4)÷2688÷R(3)tan(Abs(P)÷2)+N÷2-N(3)÷240÷R2+E→Z[6]: O-T+ΠR×Abs(P)÷180+H÷2-N÷2→Z[7]:If Z≤O-T:Then Z-O→S:G→Z[2]:Goto 1: IfEnd: If Z≤O-T+H:Then Z-O+T→S:Prog “HX”:G+WK→Z[2]:A-T→A:G→E:Goto 2:IfEnd:If Z≤Z[7]: Then 180(Z-O+T-0.5H)÷R÷Π→S : A+R(1-Cos(S))→B:H÷2-H∧(3) ÷240÷R2+Rsin(S)→A:R→M:G+WS→Z[2]: A-T→A:G→E :Goto 2: IfEnd:

If Z≤Z[7]+N:Then Z[7]+N-Z→S:Z[6]→T :N→H:Prog “HX”:G+P→E:E-WK→Z[2]:T-A→A:C→H:Goto 2:IfEnd:

Z-Z[7]-N+Z[6]→S:G+P→Z[2]: LbI 1:U+Scos(Z[2])→I:V+Ssin(Z[2]→J: Return:LbI 2:U+Acos(E)-WBsin(E→I:V+ASin(E)+WBcos(E→J

3. 交点法缓和段子程序(HX)

程序名:HX

S-S(5)÷40÷R2÷H2+S(9)÷3456÷R(4) ÷H(4→A:S∧(3) ÷6÷R÷H-S∧(7)÷336÷R∧(3)÷H∧(3)+S∧(11)÷42240÷R∧(5) ÷H∧(5→B:90S2÷Π÷R÷H→K:RH÷S→M

4. 交点法反算子程序(ZX)

程序名:ZX

0→D:Do:Z+D→Z:Prog“Z”:Pol(X-I,Y-J+.000000001:J-Z[2]→J:Isin(J→S:Icos(J→D: If M≠0:Then Pol(M-WS,D:JMΠ÷180→D:IfEnd: LpWhile Abs(D)>0.001:Z+D→Z:S→D

5.线路选择子程序(线路选择输0时。则输曲线参数(QX)

程序名:QX

1→A:”QX:?=0,X1=1,X2=2”?A:A→Z[3]:

If A=0:Then ”JDKM”?O:”XJ”?U:”YJ”?V:”FW”?G:”LS1”?H:“LS2”?N:“JDZJ”?P:?R:IfEnd

6.坐标计算参数矩阵调出子程序(F)

程序名:F

Mat F[1,1]O: Mat F[1,2]→U: Mat F[1,3]→V: Mat F[1,4]→G: Mat F[1,5]→H: Mat F[1,6]→N: Mat F[1,7]→P: Mat F[1,8]→R

7:极坐放样计算程序(计算放样点至置仪点方位角及距离)

程序名:JS

Z[4]→K:Z[5]→L:Pol(X-K, Y-L+.0000000001): J<0=>J+360→J: Int(J)+0.01Int(60Frac(J))+0.006Frac(60Frac(J)) →J: Fix 4:” FWJ=”: Locate 6,4,J:

Fix 3:”   S=”:Locate 6,4,I

8.数据子程序(根据自己标段设计数据修改红色部分)

程序名:X1(坐标计算要素程序,暂例子只给二条线路参数)

Z[3]=0=>Return:Z[3]=1=>Goto 1:Z[3]=2=>Goto 2:

LbI 1:If  Z122269.856:Then [[121656.952, 2603848.019, 508351.147, 98°53′22.6″,660,300, 41°47′44.1″, 1415.097]]→Mat F: Prog”F”: Return: IfEnd:

If Z125115.9:Then [[123984.982, 2601974.464, 509885.441, 140°41′06.8″,700,400, 39°31′43.7″,2800]]→Mat F: Prog”F”: Return:IfEnd:

LbI 2:If  Z396.166:Then [[213.698, 2600569.493, 514256.323, 238°49′17.1″,107.584,120.474, 64°39′40″, 250]]→Mat F: Prog”F”: Return: IfEnd:

说明:If Z《交点HZ点桩号(或者直线段桩号):Then[[交点桩号,交点X坐标,交点Y坐标,前交点至止交点方位角,交点前段缓和曲线长度,交点后段缓和曲线长度,交点转角,圆半径]] →Mat F: Prog”F”: Return: IfEnd:

注:转角分正负,左偏为负,右偏为正.加粗O为子母..Z[2]值为所计算点切线方位角。

输入部分:

1、"A:X,Y=1,KM,D=2"?  选择正反算,输1为正算,输2为反算;

2、XZ? YZ?输入置仪点X、Y坐标

3、”QX:?=0,X1=1,X2=2”? 选择手工输入参数及调入参数,输0则手工输入交点线元参数,输1则调入子程序X1中第一条线路,输入计算第二条线路。

4、PJ?  路线方向中线向右夹角,默认为90度;

5、JDKM?XJ?YJY?FW?LS1?LS2?JDZJ?R?分别输入:交点桩号,交点X坐标,交点Y坐标,前交点至止交点方位角,交点前段缓和曲线长度,交点后段缓和曲线长度,交点转角,圆半径

6、KM? 输入计算段任意点桩号(主程序中输-1,返回选择正反算,输-2,返回选择输入选择线路或输入参数.

 7、D? 距中桩距离,左负,右正,中桩输0。

输出部分:

1、X=***    正算时,计算得出的所求点的X坐标
2、 Y=***    正算时,计算得出的所求点的Y坐标

3、FWJ=***   正算时,计算得出的所求点的至置仪点方位角(显示125.3258即是125度32分58秒)

4、S=***   正算时,计算得出的所求点的至置仪点距离

5、KM=***    反算时,计算得出的所求点的里程
6、D=***    反算时,计算得出的所求点的边距

附X1子程序中数据的设计图纸。(红色部分)

桩  号

坐     标

N (X)

E (Y)

EK0+000

2600680.126

514439.154

EK0+020

2600669.814

514422.018

EK0+040

2600659.759

514404.730

EK0+060

2600650.222

514387.151

EK0+080

2600641.480

514369.166

EK0+100

2600633.822

514350.694

EK0+107.584

2600631.266

514343.554

EK0+120

2600627.548

514331.709

EK0+140

2600622.808

514312.284

EK0+160

2600619.636

514292.543

EK0+180

2600618.051

514272.611

EK0+200

2600618.064

514252.616

EK0+220

2600619.675

514232.687

EK0+240

2600622.874

514212.949

EK0+260

2600627.639

514193.531

EK0+275.692

2600632.456

514178.599

EK0+280

2600633.941

514174.555

EK0+300

2600641.667

514156.112

EK0+320

2600650.555

514138.199

EK0+340

2600660.338

514120.757

EK0+360

2600670.765

514103.691

EK0+380

2600681.599

514086.879

EK0+396.166

2600690.498

514073.383

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
计算两条直线的交点,可以使用以下步骤: 1. 确定两条直线的斜率和截距。对于一般形式的直线方程 Ax+By+C=0,斜率为 -A/B,截距为 -C/B。 2. 如果两条直线的斜率相同,说明它们平行,没有交点;如果斜率不同,说明它们有交点。 3. 计算交点的 x 坐标。将两条直线的截距相减,除以斜率的差,得到交点的 x 坐标。 4. 计算交点的 y 坐标。将交点的 x 坐标代入任意一条直线的方程中即可。 下面是使用 OpenCvSharp 计算直线交点的示例代码: ```csharp using OpenCvSharp; using System; namespace LineIntersection { class Program { static void Main(string[] args) { // 创建两条直线 Point2d p1 = new Point2d(100, 100); // 第一条直线的一个点 Point2d p2 = new Point2d(200, 200); // 第一条直线的另一个点 Point2d p3 = new Point2d(150, 50); // 第二条直线的一个点 Point2d p4 = new Point2d(50, 150); // 第二条直线的另一个点 // 计算两条直线的斜率和截距 double k1 = (p2.Y - p1.Y) / (p2.X - p1.X); double b1 = p1.Y - k1 * p1.X; double k2 = (p4.Y - p3.Y) / (p4.X - p3.X); double b2 = p3.Y - k2 * p3.X; // 计算交点的 x 坐标 double x = (b2 - b1) / (k1 - k2); // 计算交点的 y 坐标 double y = k1 * x + b1; Console.WriteLine($"Intersection: ({x}, {y})"); } } } ``` 这个例子中创建了两条直线,分别连接点 (100, 100) 和 (200, 200),以及点 (150, 50) 和 (50, 150)。然后计算两条直线的斜率和截距,并使用上述公式计算交点坐标。最终输出交点坐标

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣华富贵8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值