• 问题重现

  现在一平面上有三点,分别是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实现计算三角形等平面图形的夹角问题的更多相关文章

  1. Java入门:基础算法之计算三角形面积

    本部分介绍如何计算三角形面积. /** * @author: 理工云课堂 * @description: 程序计算三角形的面积.三角形的底和高由用户输入 */ import java.util.Sca ...

  2. Java精确计算小数

    Java在计算浮点数的时候,由于二进制无法精确表示0.1的值(就好比十进制无法精确表示1/3一样),所以一般会对小数格式化处理. 但是如果涉及到金钱的项目,一点点误差都不能有,必须使用精确运算的时候, ...

  3. OpenJudge计算概论-计算三角形面积【海伦公式】

    /*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的 ...

  4. Java精确计算

    Java精确计算 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...

  5. PHP图形计算器(计算三角形矩形周长面积)

    运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php;   ...

  6. java对数计算

    Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...

  7. java精确计算、精确计算工具类

    java精确计算 package org.aisino.erp.webservice.dzfp.util; import java.math.BigDecimal; public class Math ...

  8. Spark Java API 计算 Levenshtein 距离

    Spark Java API 计算 Levenshtein 距离 在上一篇文章中,完成了Spark开发环境的搭建,最终的目标是对用户昵称信息做聚类分析,找出违规的昵称.聚类分析需要一个距离,用来衡量两 ...

  9. 计算概论(A)/基础编程练习2(8题)/3:计算三角形面积

    #include<stdio.h> #include<math.h> int main() { // 声明三角形的三个顶点坐标和面积 float x1, y1, x2, y2, ...

随机推荐

  1. [LintCode] 两个排序数组的中位数

    class Solution { public: /** * @param A: An integer array. * @param B: An integer array. * @return: ...

  2. Linux下RTL8723BE无线网卡驱动问题解决方法

    的RT723BE这款无线网卡模块真是坑爹,岂止是坑爹,简直就是坑爹...... lspci -vnn 看网卡型号 一.安装问题: sudo apt-get install linux-headers- ...

  3. JAVA 遍历文件夹下的所有文件(递归调用)

    package file; import java.io.File; public class Test1 { public static void main(String[] args) { Str ...

  4. _heap_alloc_base 奔溃,奔溃原因:堆被破坏

    现象:程序崩溃的地方比较随机,之前没问题的代码, 可能直接奔溃,多线程下其他地方堆栈被破坏,引起崩溃的时间是不定,所以在其他地方随机性奔溃 检测方法:使用windows工具gflags.exe 开启 ...

  5. 面向对象 - 1.封装之如何实现属性的隐藏/2.封装的意义/3.封装与扩展性/4.property的使用

    1.封装之如何实现属性的隐藏封装: __x=1 # 把数据属性隐藏 (如何实现隐藏) 类定义阶段 __开头发生了变形 __x --> _A__x特点: 1.在类外部无法直接:obj.__Attr ...

  6. 请写出用于校验HTML文本框中输入的内容全部为数字的javascript代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...

  7. junit test 报错,java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest],

    java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest], {ExactMatc ...

  8. 一段能瞬间秒杀所有版本IE的简单HTML代码

    许多人都非常讨厌InternetExplorer,在西方万圣节即将到来之际,让我们来看一个真正吓人的东西——如何用一段简单的HTML和CSS,将任何版本的IE搞死.我们只需要简单地打开任意文本编辑器, ...

  9. PHP的几种排序方法

    <?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PH ...

  10. 使用idea的条件断点快速定位注解的处理类

    看代码时会碰到注解的处理类难定位的情况,比如spring的某个注解我们想知道到底是谁在处理他,他起什么作用,通过普通的代码搜索功能不容易找到,比如好用的方法就是条件断点. 比如下断:Accessibl ...