已知直角三角形两点坐标和一边长,求另一点坐标 | 三角函数
Posted 洛阳泰山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知直角三角形两点坐标和一边长,求另一点坐标 | 三角函数相关的知识,希望对你有一定的参考价值。
如图上图:已知 A点坐标(ax,ay),B点坐标(bx,by),边长BC=L,求C点坐标(cx,cy)?
思路:
先利用A点坐标和B点坐标求出线段AB相对于坐标系的的倾角弧度(或者斜率),然后将AB
线旋转90度,即加上90度的弧度(π/2)得到BC线的斜率或者弧度,利用三角函数的正弦和余弦函数求助CD和BD的边长,然后用bx+bd,by+cy,即可得到C坐标
需要引入第三方jar包,pom文件配置
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.18.2</version>
<type>bundle</type>
</dependency>
代码示例
package com.ruoyi.uwb3d.util;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.LineSegment;
public class GeometryMathUtil
/**
* 方法描述: 线段角度
*
* @param p0
* @param p1
* @return @link double
* @throws
* @author tarzan
* @date 2022年02月24日 14:14:33
*/
public static double angle(Coordinate p0, Coordinate p1)
LineSegment ls=new LineSegment(p0,p1);
return ls.angle();
/**
* 方法描述: 移动点
*
* @param p
* @param angle
* @param distance
* @return @link Coordinate
* @throws
* @author tarzan
* @date 2022年02月24日 14:14:49
*/
public static Coordinate movePoint(Coordinate p,double angle,double distance)
double sin=Math.sin(angle);
Double a= distance*sin;
double cos=Math.cos(angle);
Double b= distance*cos;
return new Coordinate(p.x+b.floatValue(),p.y+a.floatValue());
public static void main(String[] args)
double distance=5;
Coordinate p0=new Coordinate(1,1);
Coordinate p1=new Coordinate(4,5);
//当c点在b点上方
double angle=angle(p0,p1)+Math.PI/2;
//当c点在b点下方
// double angle=angle(p1,p0)+Math.PI/2;
Coordinate result= movePoint(p1,angle,distance);
System.out.println(result.x+" "+result.y);
输出结果
当C点在B点上方时
当C点在B点下方时
以上是关于已知直角三角形两点坐标和一边长,求另一点坐标 | 三角函数的主要内容,如果未能解决你的问题,请参考以下文章