matlab 求点坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 求点坐标相关的知识,希望对你有一定的参考价值。

已知在一个空间直角坐标系中两点的坐标A,B,和C到B的距离,且A,B,C共线,求C的坐标。能不能帮忙解决一下求解的matlab程序

好多分啊,求采纳
思路如下:
1、根据A,B得到直线方程
2、根据B和BC距离得到C所在圆的方程
3、根据直线方程和圆的方程交点求C点的位置

程序如下:
clear;
clc
A_x = input('输入点A的横坐标:');
A_y = input('输入点A的纵坐标:');
B_x = input('输入点B的横坐标:');
B_y = input('输入点B的纵坐标:');
R = input('输入BC间距离:');
syms x y
eq1 = (x-A_x)/(B_x-A_x)*(B_y-A_y)+A_y-y; %%%% 直线方程
eq1 = subs(eq1);
eq2 = (x-B_x)^2+(y-B_y)^2-R^2; %%%% 圆的方程
eq2 = subs(eq2);
[x,y]=solve(eq1,eq2); %%%% 求直线和圆的交点
x = double(x);
y = double(y);
fprintf('第一个可能点是(%f,%f)\n',x(1),y(1))
fprintf('第二个可能点是(%f,%f)\n',x(2),y(2))

结果如下:
输入点A的横坐标:1
输入点A的纵坐标:1
输入点B的横坐标:2
输入点B的纵坐标:2
输入BC间距离:2
第一个可能点是(3.414214,3.414214)
第二个可能点是(0.585786,0.585786)追问

谢谢,我是想问一下如果是在空间直角坐标系中的话该怎么解决,就是再引入一个z

追答

AB两个点只能决定线,无法决定平面,所以如果ABC还是共线的化,答案仍然还是两个点。
所以结果是空间直线和球体的交点问题。
只要参考二维的就行,程序如下:
clear;
clc
A_x = input('输入点A的x坐标:');
A_y = input('输入点A的y坐标:');
A_z = input('输入点A的z坐标:');
B_x = input('输入点B的x坐标:');
B_y = input('输入点B的y坐标:');
B_z = input('输入点B的z坐标:');
R = input('输入BC间距离:');
syms x y z
eq1 = (x-A_x)/(B_x-A_x)*(B_y-A_y)+A_y-y;
eq1 = subs(eq1);
eq2 = (x-A_x)/(B_x-A_x)*(B_z-A_z)+A_z-z;
eq2 = subs(eq2);
eq3 = (x-B_x)^2+(y-B_y)^2+(z-B_z)^2-R^2;
eq3 = subs(eq3);
[x,y,z]=solve(eq1,eq2,eq3);
x = double(x);
y = double(y);
z = double(z);
fprintf('第一个可能点是(%f,%f,%f)\n',x(1),y(1),z(1))
fprintf('第二个可能点是(%f,%f,%f)\n',x(2),y(2),z(2))

结果:
输入点A的x坐标:0
输入点A的y坐标:0
输入点A的z坐标:0
输入点B的x坐标:1
输入点B的y坐标:1
输入点B的z坐标:1
输入BC间距离:2
第一个可能点是(2.154701,2.154701,2.154701)
第二个可能点是(-0.154701,-0.154701,-0.154701)

追问

太感谢了,恩就是空间中的两点共线,我还想问下有没有办法直接得出一个坐标而不是两个坐标,因为方向是A到B到C,所以能不能程序直接实现的到C的固定坐标,谢谢~



我试了一下,结果是图片上的那样

追答

简单,你把最后两行换成如下:
tip = (x-B_x)*(B_x-A_x)>0; %%%% A到B到C,因此C_x-B_x和B_x-A_x同号
fprintf('所求C点是(%f,%f,%f)\n',x(tip),y(tip),z(tip))

不可能错误啊,我这都调试过了,你用哪个版本MATLAB,是不是放在m文件中运行的?

追问

我的版本是2014a,我就运行了下面这段,就报了图片上的那个错

参考技术A 好多年没学习数学了哈,快忘了。

Java构造重载求点与原点点与固定点点与点的距离

描述

编写坐标系中的点类CPoint。

1.编写相应的构造方法初始化某个点;

2.重载构造方法初始化对角线的点;

3.编写重载方法计算点到原点,点到点,点到另一个坐标的距离。

输入两个点的坐标,若该点的横坐标与纵坐标相同如(5,5),则只需输入5即可。

输出两点与原点的距离、第一个点与固定点(-6,-8)的距离、两点的距离,结果保留两位小数。

难度

一般

输入示例

3 4
5

输出示例

5.00
7.07
15.00
2.24
import java.util.Scanner;

public class CPoint {
    public static void main(String[] args){
        int x1,x,y1;
        Scanner scn=new Scanner(System.in);
        x1=scn.nextInt();
        y1=scn.nextInt();
        x=scn.nextInt();
        Point p1 = new Point(x1,y1);
        Point p2 = new Point(x);
        System.out.println(String.format("%.2f", p1.distance()));
        System.out.println(String.format("%.2f", p2.distance()));
        System.out.println(String.format("%.2f", p1.distance(-6,-8)));
        System.out.println(String.format("%.2f", p1.distance(p2)));
    }

}
class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Point(int x) {
        this(x, x);//重点
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public double distance(int x, int y) {
        return Math.sqrt(Math.pow(x - this.x, 2) + Math.pow(y - this.y, 2));
    }

    public double distance(Point p) {
        return distance(p.getX(), p.getY());
    }

    public double distance() {
        return distance(0, 0);
    }
}

 

以上是关于matlab 求点坐标的主要内容,如果未能解决你的问题,请参考以下文章

平面坐标系中,求点在线上的投影坐标(如图)

知道两点坐标怎样求直线的方程,求matlab程序

怎样在matlab中得到直线方程与plot出的曲线之间的交点坐标

Java构造重载求点与原点点与固定点点与点的距离

坐标轴上两点间距离公式是啥?

MATLAB设置坐标轴范围