坐标求四面体体积_给定4个点坐标求四面体体积
Java语言: Codee#16213
01 import java.io.*;
02 import java.util.*;
03 import java.math.*;
04 import java.text.*;
05 //给定四面体4个点,求体积
06 //学习了解了数量积(点积or内积)写作(a,b)运算结果为数字
07 //向量积(叉积or外积)写作[a,b]运算结果为向量
08 //那么混合积为定义三个向量AB,AC,AD,则其混合积为([AB,AC],AD)(这里A,B,C,D是四面体4个点)
09 //其绝对值除6就是四面体体积
10 //(ab与ac的叉积 点积上 ad)是体积的6倍
11 //(ab与ac的叉积的模)是面积的两倍
12 //有个PPT讲解的很不错,有助于了解混合积数学及物理含义
13 //http://wlkc.zzuli.edu.cn/kejianweb/xiandai/2/2-3.ppt
14 public class Main {
15 final static int maxn=4;
16 public static class Point{
17 double x,y,z;
18
19 Point(){};
20 Point(double xx,double yy,double zz){
21 x=xx;y=yy;z=zz;
22 }
23 void out(){
24 System.out.println(x+" "+y+" "+z);
25 }
26
27 };
28
29 public static double Dot(Point p,Point a,Point b){
30 return(a.x-p.x)*(b.x-p.x)+(a.y-p.y)*(b.y-p.y);
31 }//pa与pb的点积 (2维)
32
33 public static double Cross(Point p,Point a,Point b){
34 return (a.y-p.y)*(b.x-p.x)-(a.x-p.x)*(b.y-p.y);
35 }//pa与pb的叉积(2维)
36
37 public static double Cross(Point a,Point b){
38 return a.y*b.x-a.x*b.y;
39 }//向量a与b的叉积(2维)
40
41 public static double Dot(Point a,Point b){
42 return a.x*b.x+a.y*b.y;
43 }//向量a和b的点积(2维)
44
45
46
47 public static double ThreeDot(Point p,Point a,Point b){
48 return(a.x-p.x)*(b.x-p.x)+(a.y-p.y)*(b.y-p.y)+(a.z-p.z)*(b.z-p.z);
49 }//pa与pb的点积 (3维)
50
51
52 public static Point ThreeCross(Point p,Point a,Point b){
53 Point C=new Point();
54 C.x=(a.y-p.y)*(b.z-p.z)-(a.z-p.z)*(b.y-p.y);
55 C.y=(a.z-p.z)*(b.x-p.x)-(a.x-p.x)*(b.z-p.z);
56 C.z=(a.x-p.x)*(b.y-p.y)-(a.y-p.y)*(b.x-p.x);
57 return C;
58 }//pa与pb的叉积(3维)
59
60 public static double ThreeDot(Point a,Point b){
61 return a.x*b.x+a.y*b.y+a.z*b.z;
62 }//向量a与b的点积 (3维)
63
64 public static Point ThreeCross(Point a,Point b){
65 Point C=new Point();
66 C.x=a.y*b.z-a.z*b.y;
67 C.y=a.z*b.x-a.x*b.z;
68 C.z=a.x*b.y-a.y*b.x;
69 return C;
70 }//向量a与b的叉积(3维)
71
72 public static double TetrahedronArea(Point a,Point b,Point c,Point d){
73 double ans=Math.abs(ThreeDot(ThreeCross(a,b,c),
74 new Point(d.x-a.x,d.y-a.y,d.z-a.z)))/6;
75 return ans;
76 }
77
78 public static Point p[]=new Point[maxn];
79
80 public static void main(String args[]){
81 Scanner in=new Scanner(System.in);
82
83 int test=in.nextInt();
84 for(int caseid=1;caseid<=test;caseid++){
85 for(int i=0;i
86 double x=in.nextDouble();
87 double y=in.nextDouble();
88 double z=in.nextDouble();
89 p[i]=new Point(x,y,z);
90 }
91
92
93 DecimalFormat g=new DecimalFormat("0.000");
94 System.out.println("Case #"+caseid+": "+
95 g.format(TetrahedronArea(p[0],p[1],p[2],p[3])));
96 }
97 }
98 }
标签:
坐标求四面体体积_给定4个点坐标求四面体体积相关推荐
- 次坐标从0开始_全站仪使用方法及坐标计算讲解
大家都知道随着建筑工程和仪器设备的发展,全站仪现已替代了经纬仪广泛应用于建筑工程中. 为了更好的掌握测量放线知识,今天对全站仪的使用和坐标计算和大家相互交流学习一下. 全站仪常规注意事项 在使用本仪器 ...
- Python(分治算法)问题 F: 求逆序对_给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。
问题 F: 求逆序对 题目描述 给定一个序列a1,a2,-,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目. 注意:n<=10^5,ai<=10^5 ...
- python编程求长方体体积_编写基于对象的程序求3个长方体的体积
/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: volume.cpp * 作者:孙锐 ...
- java求外接圆圆心_由三点三维坐标计算圆半径和圆心位置
[实例简介] 通过输入任意三点空间坐标自动判断三点是否在一条直线上,若不在则求三点外接圆的圆心位置和半径,计算精度可调节.解决了"知三点求圆心半径"程序对于某些点无法计算的缺陷. ...
- c语言求圆锥的表面积和体积_用C语言 编辑一个求圆锥体表面积与体积的代码...
满意答案 我来回答#include #include #define N 3.1415 using namespace std; class Height { private: float h; pu ...
- php要求输入是个数求平均值、_【227期】EXCEL求平均值的各种套路汇聚合,最后难倒70%的人...
前言:在我们日常办公中,经常会发生这样的事件,一个相对简单的问题,折磨了自己好久,可能要几个加班,才能得到有效可行的解决方式,但是,换一个人,可能就是豆芽菜,很容易解决.本期案例分基础篇和提高篇,本期 ...
- c# 计算圆锥的体积_用C#如何编写程序计算球,圆柱和圆锥的表面积和体积? 用C#编写方法并通过方法...
//球体表面积A=4π*R^2,体积V=4/3π*R^3 Console.WriteLine("请输入圆的半径R"); double R=Convert.ToInt32(Conso ...
- java 三维数组长方体求体积_已知任意一个四面体的六条棱长,如何求出其体积?...
如果现在有一个任意形状的四面体,我们只知道它的六条棱长,那我们该如何确定它的体积呢?这就是著名的 四面体问题了,在解决这个问题之前,我们先来学习一点预备知识. 棱锥的体积 由于正四面体是一个棱锥,所以 ...
- 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?
问题描述: 给定两个数组arrx和arry,长度都为N.代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点? 思想 坐标系中两个点 ...
- python求圆柱体的体积_漫谈超球体的体积公式
现实生活中,我们只要掌握圆的周长和面积公式,了解球的表面积和体积公式就够用了,没有什么可以深究的.本篇将带你走进高维度球的表面积和体积公式[1]. 我们生活在三维空间,对更高维度的空间难以构想.笛卡尔 ...
最新文章
- 矩阵快速幂+构造方法
- 服务器端往手机端推送数据的问题(手机解决方案)
- 强大自己,从学习开始!2020年最有内容的订阅号,每一个都是万里挑一!
- SQL Server 2008用'sa'登录失败,启用'sa'登录的办法
- lua require dofile loadfile区别
- 面向任务的 Git 学习法
- java邻接表无向图的创建_邻接表无向图(三) 之Java详解
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
- pytorch教程龙曲良31-35
- Android使用READ_CONTACTS读取手机联系人
- 模块ntdll中出现异常eaccessviolation_python常用模块
- 6 PP配置-生产主数据-工作中心相关-工作中心标准值参数
- Java并发编程-线程池底层工作原理
- 决策树(五)--OpenCV决策树
- memcached 远程拒绝服务漏洞
- 计算机关机后风扇还转,电脑关机后cpu风扇还在转怎么办?解决电脑关机后cpu散热器还在转...
- 荣耀magicbook15C语言,荣耀 MagicBook 15评测 聊聊目前性价比最高的大屏轻薄本
- 内容安全策略(content-security-policy)
- 职场感悟.Video.人生各自精彩,谁说人生是一场马拉松的?
- vtk 中vtkMapper的各函数解析