• 问题重现

  现在一平面上有三点,分别是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. zookeeper基本概念及原理

    zookeeper是一个分布式的,开源的分布式应用程序,该程序主要用于管理其他分布式应用程序.其他分布式应用程序可以基于zookeeper实现数据同步,配置维护和命名服务等等.zookeeper是Ha ...

  2. 云计算之路:2009年Xen一个补丁背后那不为人知的故事

    仔细阅读了http://www.cnblogs.com/cmt/p/3729386.html这篇关于xen的博文,这篇博文写的挺赞的,分析的也很细致,涉及到4年前的一个patch的故事.在讲这个故事之 ...

  3. ubuntu 安装低版本firefox

    firefox 57以后很多插件不支持了,ubuntu16自带火狐版本59,想换回56. 1.下载想换回的版本 https://ftp.mozilla.org/pub/mozilla.org/fire ...

  4. Powershell Get Domain Group的几种方法

    Group常见属性介绍: 一.Get-ADGroup获取群组(如下例循环获取群组的发送权限) #群组的发送权限info $groups=Get-ADGroup -filter * -SearchSco ...

  5. learnyou 相关网站

    http://learnyouahaskell.com/ http://learnyouahaskell-zh-tw.csie.org/ http://learnyousomeerlang.com/

  6. 视频流协议HLS与RTMP 直播原理 点播原理

    小结: 1.HLS原理 视频--->图像.声音分别编码打包切割容器文件ts,建立纯文本索引文件.m3u8--->播放器http下载容器文件.索引文件,播放,下载 基于HLS可以实现直播和点 ...

  7. JQuery输入自动完成

    Combogrid 是一个jQuery插件用于为输入框添加高级自完成功能(auto-complete).当用户输入的时候,会在输入框的下方面动态显示一个拥有分页功能 的表格(Grid)控件. 通过Aj ...

  8. io.Writer

    var w io.Writer // 设置为你的 io.Writer var b bytes.Buffer fmt.Fprint(&b, "Hello World") w ...

  9. 【JUnit】junit4的几个assert方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhtao01/article/details/27858225 在静态类junit.framewor ...

  10. 启动一个支持文件上传的HTTP-Server

    Python实现,源码来自网络,代码内部有作者信息. HTTP方式共享文件,对于不需要用户名和密码验证的系统非常方便.通过浏览器就可以实现文件上传和下载.非常适合用作测试系统的脚手架. 对于系统使用c ...