首页 > 其他分享 >向量叉积判断三角形是否进行了三维旋转

向量叉积判断三角形是否进行了三维旋转

时间:2023-01-27 16:36:44浏览次数:49  
标签:BA BC EF 三维 second 叉积 铁丝 向量 first

2023牛客寒假算法一 E 叉积判断三维旋转

鸡在玩铁丝。

具体来说,二维平面上有一根L型的铁丝,由AB和BC两条线段组成,鸡可以用以下三种操作玩铁丝:

1、在平面内任意地平移铁丝,即铁丝上每一个点横坐标都变化Δx、纵坐标都变化Δy;

2、以B点为轴,任意地旋转铁丝,旋转是在平面上进行的(即旋转过程中铁丝不能离开地面);

3、鸡是三维生物!鸡将该铁丝拿起,在自己手里任意的调整铁丝的姿态后(鸡不能使铁丝发生形变)再随意放回平面上任意位置。

鸡可以任意(任意顺序、任意次数、不同的操作可以交替使用)使用上述三种操作来操作铁丝,经过一段时间的操作后,得到新铁丝的位置可以用线段DE和EF描述。注意DE并不保证与AB对应,EF同理,即DEF只描述操作后铁丝的形状。现在,你想知道只根据ABC与DEF的信息,是否可以断言鸡一定使用过至少一次第三种操作。

都变了类型的加减即使是只需要其符号也要一double形式返回,int有取为0的危险

double判断相等,相差在一定的精度内即可

#include <iostream>
#include<math.h>

using namespace std;

typedef double db;
typedef pair<int, int> PII;
typedef pair<db, db> pdb;
const db eps=1e-3;
PII a, b, c;
pdb x, y, z;
pdb BA, BC, ED, EF;

db len(pdb x)
{
    return x.first * x.first + x.second * x.second;
}

int main()
{
    int k;
    cin >> k;
    while (k--)
    {
        cin >> a.first >> a.second >> b.first >> b.second >> c.first >> c.second;
        cin >> x.first >> x.second >> y.first >> y.second >> z.first >> z.second;

        BA = {a.first - b.first, a.second - b.second}, BC = {c.first - b.first, c.second - b.second};
        if (len(BA) == len(BC))
        {
            puts("NO");
            continue;
        }

        ED = {x.first - y.first, x.second - y.second}, EF = {z.first - y.first, z.second - y.second};
        if (fabs(len(ED) - len(BC)) < eps)
        {
            swap(BA, BC);
        }

        db r1 = BA.first * BC.second - BA.second * BC.first;
        db r2 = ED.first * EF.second - ED.second * EF.first;

        if (r1 * r2 < 0)
        {
            puts("YES");
        }
        else
        {
            puts("NO");
        }
    }
    return 0;
}

标签:BA,BC,EF,三维,second,叉积,铁丝,向量,first
From: https://www.cnblogs.com/ccag/p/17068985.html

相关文章

  • Python 三维绘图问题
    提问: 各位,本人刚刚才接触Python。现在有个问题在于,我有一组数据想要去将变成三维曲面图,网上教程多是曲面上的点Z用XY来表示,但是我这个数据是单纯的测量数据,并没有什么公......
  • day0--高翔第三讲 三维空间刚体运动1
    学习目的描述一个三维空间中运动的物体(刚体)在某一时刻的位置。预备知识线性代数c++语言cmake工程核心知识1.旋转矩阵位点三维空间中的一个点,由三个轴来描述(x,y......
  • 计算几何笔记(一):点与向量
    开始之前圆周率constpi=acos(-1);浮点数的比较对实数进行浮点运算难免会出现精度误差为了控制精度,可以设置一个偏差值\(eps\)constdoubleeps=1e-5;intsgn(......
  • Cesium 二三维视图联动
    近期做了二三维视图联动,简单记录一下。主要功能就是同时开启二维和三维视图一起查看。大概思路就是新创建一个2D视图,将相机进行同步(其实部分资源也应该同步,不过这需要......
  • 【C++】【Ctrl+CV即可食用】三维点拟合空间直线
    前景概述网上三维点拟合空间直线的代码很多大多数都是python或者matlab这里贴一个C++的代码原目的是拟合出直线之后任取两个点手动计算一下斜率数学原理最小二乘拟合......
  • 【三维重建系列】相机模型部分公式详解记录
    相机模型P矩阵公式:\[P=KR[I|-C^{\backsim}]\]其中\(C^{\backsim}\)表示平移矩阵为齐次坐标即世界坐标系原点到相机坐标系原点的距离\(R\)同样表达的也是这个关系......
  • machsim 三维弯管机干涉检验 仿真模拟软件
      三维弯管机防干涉检验仿真软件: (1)可以集成进windows编程环境,比如C#,dephi,vc,vb等; (2)实时监测干涉位置,并提示干涉部件; (3)支持单步运动,以及连续运动; (4)支持G代......
  • 数字孪生三维可视化场景搭建如何搭建?
    数字孪生不仅是物理世界的镜像,还需接受物理世界的实时信息,反过来实时驱动物理世界,进化为物理世界的先知、先觉甚至超体。这个演变过程被称为成熟进化,即数字孪生体的生长发......
  • 【图像识别】基于卷积神经网络CNN和支持向量机SVM实现花卉图像识别附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 二维、三维可视化编辑器脚本
    1、动画//property动画要改变的图元的属性名//accessTypeproperty的类型,枚举如下://null默认类型,如property为width,采用getWidth()和setWidth(value)的get/set或i......