测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)

坐标正算:【小程序】坐标正算神器V1.0(附源程序)

坐标反算一直是困扰测量人的一个问题,坐标反算是指已知两点坐标,反求边长和方位角。本文演示用C#和VB语言实现过程。

文章目录

  • 一、坐标反算原理
    • 1. 原理图
    • 2. 计算公式
    • 3. 象限角
    • 4. 限角和坐标方位角的关系
  • 二、C#语言实现
    • 1. 界面设计
    • 2. 源代码
  • 三、VB语言实现
    • 1. 界面设计
    • 2. 源代码


一、坐标反算原理

已知两点坐标,反求边长和方位角,称为坐标反算。

1. 原理图

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第1张图片

2. 计算公式

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第2张图片

3. 象限角

注意:上述计算的角是象限角,还应根据方位角与象限角的关系,将象限角转换为方位角。

由坐标纵轴的北端或南端起,顺时针或逆时针至直线间所夹的锐角,并注出象限名称,称为该直线的象限角,用R表示,角值为0°~ 90°

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第3张图片

4. 限角和坐标方位角的关系

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第4张图片
测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第5张图片

二、C#语言实现

1. 界面设计

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第6张图片

2. 源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 坐标反算
{
     
    public partial class Form1 : Form
    {
     
        public Form1()
        {
     
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
     
            double XA, YA, XB, YB, R, aAB, DAB, dY, dX;

            XA = double.Parse(textBox1.Text);
            YA = double.Parse(textBox2.Text);

            XB = double.Parse(textBox3.Text);
            YB = double.Parse(textBox4.Text);

            dY = YB - YA; dX = XB - XA;

            R = Math.Atan(Math.Abs(dY) / Math.Abs(dX));
            R = R * 180 / 3.14159265;

            if (dY > 0 && dX > 0)
                aAB = R;
            else if (dY > 0 && dX < 0)
                aAB = 180 - R;
            else if (dY< 0 && dX < 0)
                aAB = 180 + R;
            else
                aAB = 360-R;
            
            textBox5.Text = aAB.ToString();

            DAB = Math.Sqrt(Math.Pow(dY,2)+Math.Pow(dX,2));
            textBox6.Text = DAB.ToString();
        }

        private void button2_Click(object sender, EventArgs e)
        {
     
            Application.Exit();
        }
    }
}

三、VB语言实现

1. 界面设计

测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB)_第7张图片

2. 源代码

计算按钮单击事件:


Private Sub Command1_Click()
    Dim xa, ya, xb, yb, R, aab, dab, dy, dx As Double
    xa = Val(Text1.Text)
    ya = Val(Text2.Text)
    
    xb = Val(Text3.Text)
    yb = Val(Text4.Text)
    
    dy = yb - ya
    dx = xb - xa
    
    Text7.Text = dy
    Text8.Text = dx
    
    R = Atn(Abs(dy) / Abs(dx))
    
    R = R * 180 / 3.14159265
    
    If dy > 0 And dx > 0 Then aab = R
    ElseIf dy > 0 And dx < 0 Then aab = 180 - R
    ElseIf dy < 0 And dx < 0 Then aab = 180 + R
    ElseIf dy < 0 And dx > 0 Then aab = 360 - R
    
    Text5.Text = aab
    
    dab = Sqr(dx ^ 2 + dy ^ 2)
    
    Text6.Text = dab
End Sub

退出按钮单击事件:

Private Sub Command2_Click()
	Unload Me
End Sub

你可能感兴趣的:(VB,C#,测量,坐标反算,源码)