JAVA实现计算三角形等平面图形的夹角问题
- 问题重现
现在一平面上有三点,分别是x(x1,x2),y(y1,y2),z(z1,z2),图形大致如下

现要求用java代码求出∠YxZ的度数。
- 问题分析及数学模型
1、要求两直线的夹角,就想到数学中的向量问题;
2、根据数学公式cosφ=A1A2+B1B2/[√(A1^2+B1^2)√(A2^2+B2^2)] ,(注:这里A1、A2...是向量)
3、这里要求夹角而不是余弦值,即求φ的值,需要用到反三角函数;
4、反三角函数求出来φ的值的值是弧度制,显然要将弧度制转成角度制,公式为φ*180/π。
- 代码编写
/**
* 计算三个点组成的夹角
* @author b6762
*
*/
public class Main {
public static void main(String []args){
/*
*^y
*|
| /| y点
| / |
| / |
0|--- x点----z点---------->x
|
*/
int x1=255;
int x2=145;
//中间点的坐标x(x1,x2)
int y1=211;
int y2=147;
//y点(y1,y2)
int z1=271;
int z2=182;
//z点(z1,z2)
int result = getIn_angle(x1, x2, y1, y2, z1, z2);
System.out.println("夹角为:"+result+"度");
} private static int getIn_angle(int x1, int x2, int y1, int y2, int z1, int z2) {
//向量的点乘
int t =(y1-x1)*(z1-x1)+(y2-x2)*(z2-x2); //为了精确直接使用而不使用中间变量
//包含了步骤:A=向量的点乘/向量的模相乘
// B=arccos(A),用反余弦求出弧度
// result=180*B/π 弧度转角度制
int result =(int)(180*Math.acos(
t/Math.sqrt
((Math.abs((y1-x1)*(y1-x1))+Math.abs((y2-x2)*(y2-x2)))
*(Math.abs((z1-x1)*(z1-x1))+Math.abs((z2-x2)*(z2-x2)))
))
/Math.PI);
// pi = 180
// x = ?
//====> ?=180*x/pi return result;
}
}
- 运行测试

- 小结
主要是对java中Math函数的使用。
JAVA实现计算三角形等平面图形的夹角问题的更多相关文章
- Java入门:基础算法之计算三角形面积
本部分介绍如何计算三角形面积. /** * @author: 理工云课堂 * @description: 程序计算三角形的面积.三角形的底和高由用户输入 */ import java.util.Sca ...
- Java精确计算小数
Java在计算浮点数的时候,由于二进制无法精确表示0.1的值(就好比十进制无法精确表示1/3一样),所以一般会对小数格式化处理. 但是如果涉及到金钱的项目,一点点误差都不能有,必须使用精确运算的时候, ...
- OpenJudge计算概论-计算三角形面积【海伦公式】
/*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的 ...
- Java精确计算
Java精确计算 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...
- PHP图形计算器(计算三角形矩形周长面积)
运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php; ...
- java对数计算
Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...
- java精确计算、精确计算工具类
java精确计算 package org.aisino.erp.webservice.dzfp.util; import java.math.BigDecimal; public class Math ...
- Spark Java API 计算 Levenshtein 距离
Spark Java API 计算 Levenshtein 距离 在上一篇文章中,完成了Spark开发环境的搭建,最终的目标是对用户昵称信息做聚类分析,找出违规的昵称.聚类分析需要一个距离,用来衡量两 ...
- 计算概论(A)/基础编程练习2(8题)/3:计算三角形面积
#include<stdio.h> #include<math.h> int main() { // 声明三角形的三个顶点坐标和面积 float x1, y1, x2, y2, ...
随机推荐
- [LintCode] 两个排序数组的中位数
class Solution { public: /** * @param A: An integer array. * @param B: An integer array. * @return: ...
- Linux下RTL8723BE无线网卡驱动问题解决方法
的RT723BE这款无线网卡模块真是坑爹,岂止是坑爹,简直就是坑爹...... lspci -vnn 看网卡型号 一.安装问题: sudo apt-get install linux-headers- ...
- JAVA 遍历文件夹下的所有文件(递归调用)
package file; import java.io.File; public class Test1 { public static void main(String[] args) { Str ...
- _heap_alloc_base 奔溃,奔溃原因:堆被破坏
现象:程序崩溃的地方比较随机,之前没问题的代码, 可能直接奔溃,多线程下其他地方堆栈被破坏,引起崩溃的时间是不定,所以在其他地方随机性奔溃 检测方法:使用windows工具gflags.exe 开启 ...
- 面向对象 - 1.封装之如何实现属性的隐藏/2.封装的意义/3.封装与扩展性/4.property的使用
1.封装之如何实现属性的隐藏封装: __x=1 # 把数据属性隐藏 (如何实现隐藏) 类定义阶段 __开头发生了变形 __x --> _A__x特点: 1.在类外部无法直接:obj.__Attr ...
- 请写出用于校验HTML文本框中输入的内容全部为数字的javascript代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...
- junit test 报错,java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest],
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest], {ExactMatc ...
- 一段能瞬间秒杀所有版本IE的简单HTML代码
许多人都非常讨厌InternetExplorer,在西方万圣节即将到来之际,让我们来看一个真正吓人的东西——如何用一段简单的HTML和CSS,将任何版本的IE搞死.我们只需要简单地打开任意文本编辑器, ...
- PHP的几种排序方法
<?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PH ...
- 使用idea的条件断点快速定位注解的处理类
看代码时会碰到注解的处理类难定位的情况,比如spring的某个注解我们想知道到底是谁在处理他,他起什么作用,通过普通的代码搜索功能不容易找到,比如好用的方法就是条件断点. 比如下断:Accessibl ...