三維幾何之判斷倆個乙個六面題的重心穩定性

2021-07-02 16:12:36 字數 1816 閱讀 4930

分析:

壓紙器一共有5個頂點,底面至少有三個頂點,所以可以列舉底面上的三個頂點p1p2p3,判斷是否可以以該面為底進行穩定放置。具體來說需要判斷是否所有頂點都在該面的

同側,然後整個壓紙器的重心是否在底面三角形的內部,且離各邊的距離不超過0.2.

有一種特殊情況是很容易漏掉:如果還有乙個點p4也在底面上(即四點共面),那麼重心落在p1p2p3p4的凸包內即可,不一定在三角形p1p2p3內。

**:#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const double eps=1e-8;

int dcmp(double x)

struct point3

};typedef point3 vector3;

vector3 operator + (const vector3 &a,const vector3 &b)

vector3 operator - (const point3 &a,const point3 &b)

vector3 operator *(const vector3 &a, double p)

vector3 operator /(const vector3 &a,double p)

double dot(const vector3 &a,const vector3 &b)

double length(const vector3 &a)

double angle(const vector3 &a,const vector3 &b)

vector3 cross(const vector3 &a,const vector3 &b)

double area2(const point3 &a,const point3 &b,const point3 &c)

double volume6(const point3 &a,const point3 &b,const point3 &c,const point3 &d)

bool read_point3(point3 &p)

double distacetoplane(const point3 &p,const point3 &p0,const vector3 &n)

point3 getplaneprojection(const point3 &p,const point3 &p0,const vector3 &n)

double distacetoline(const point3 &p,const point3 &a,const point3 &b)

bool sameside(const point3 &p1,const point3 &p2,const point3 &a,const point3 &b)

bool pointintri(const point3 &p,const point3 &p0,const point3 &p1,const point3 &p2)

point3 centroid(const point3 &a,const point3 &b,const point3 &c,const point3 &d)

bool insidewithmindistace(const point3 &p,const point3 &a,const point3 &b,const point3 &c,double midist)

{ if(!pointintri(p,a,b,c)) return false;

if(distacetoline(p,a,b)

簡單三維幾何,判斷倆個三角形是否相交

簡單三維幾何,多貼些三維幾何的基本的東西,一些基本函式,和定義,判斷倆個三角形是否相交,如果相交,那麼必然有乙個三角形的一條邊經過另乙個三角形的內部 邊上或者頂點,include include include include include include include include incl...

判斷乙個三維座標點在不在乙個面上,不確定有沒有問題

判斷乙個三維座標點在不在乙個面上 public class judgethreedimensional 判斷length和wide在不在x1和x2之間以及y1和y2之間 if height z1 length math.min x1,x2 length math.max x1,x2 wide mat...

將三維向量改為二維,乙個加速程式執行的方法

原函式 function routeflow calculatex x,route3d maxday 130 routeflow sparse zeros 118,maxday 路線 130天 for i 1 21 for j 1 maxday 20 t x i,j reshape route3d ...