Triangles FZU - 2273 (叉积判断点是否在三角形内)

Cadence17.2 > Allegro > 检查PCB Layout信号线组等长 Cadence17.2 > Allegro > 检查PCB Layout等长和配线 阅读详情

Triangles

FZU - 2273

This is a simple problem. Given two triangles A and B, you should determine they are intersect, contain or disjoint. (Public edge or point are treated as intersect.)


Input

First line contains an integer T (1 ≤ T ≤ 10), represents there are T test cases.

For each test case: X1 Y1 X2 Y2 X3 Y3 X4 Y4 X5 Y5 X6 Y6. All the coordinate are integer. (X1,Y1) , (X2,Y2), (X3,Y3) forms triangles A ; (X4,Y4) , (X5,Y5), (X6,Y6) forms triangles B.

-10000<=All the coordinate <=10000

Output

For each test case, output “intersect”, “contain” or “disjoint”.

Sample Input
2
0 0 0 1 1 0 10 10 9 9 9 10
0 0 1 1 1 0 0 0 1 1 0 1
Sample Output
disjoint 
intersect 


叉积:判断点在三角形内


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
struct point{
    double x,y;
    point(){};
    point(double xx,double yy):x(xx),y(yy){};
};
struct tri{
    point a,b,c;
    double s;
    tri(){};
    tri(point aa,point bb,point cc){
        a = aa;
        b = bb;
        c = cc;
        s = abs((b.x-a.x)*(c.y-a.y) - (b.y-a.y)*(c.x-a.x)) * 0.5;
    }
};
bool judge(point a,point b,point c,double S,point p){
     double s1,s2,s3;
     s1 = abs((a.x-p.x)*(b.y-p.y) - (a.y-p.y)*(b.x-p.x)) * 0.5;
     s2 = abs((a.x-p.x)*(c.y-p.y) - (a.y-p.y)*(c.x-p.x)) * 0.5;
     s3 = abs((c.x-p.x)*(b.y-p.y) - (c.y-p.y)*(b.x-p.x)) * 0.5;
     if(s1+s2+s3 == S) return true;
     else return false;
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
       double x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
       scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4,&x5,&y5,&x6,&y6);
       tri t1 = tri(point(x1,y1),point(x2,y2),point(x3,y3));
       tri t2 = tri(point(x4,y4),point(x5,y5),point(x6,y6));
       tri target,checkt;
       if(t1.s > t2.s){
          target = t1;
          checkt = t2;
       }
       else{
          target = t2;
          checkt = t1;
       }
       int cnt = 0;
       if(judge(target.a,target.b,target.c,target.s,checkt.a)) cnt++;
       if(judge(target.a,target.b,target.c,target.s,checkt.b)) cnt++;
       if(judge(target.a,target.b,target.c,target.s,checkt.c)) cnt++;
       if(cnt == 3) printf("contain\n");
       else if(cnt == 0) printf("disjoint\n");
       else printf("intersect\n");
    }
    return 0;
}


【系统架构设计师-2023年真题】综合知识-答案及详解 要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是( 阅读详情

相关推荐

华中科技大学计算机组成原理-单总线CPU设计(全部通关)

【计算机组成原理】 单总线CPU实验 华中科技大学-计算机组成原理 实验三 单总线CPU设计 第1关 MIPS指令译码器设计 第2关 单总线CPU微程序入口查找逻辑 第3关 单总线CPU微程序条件判别测试逻辑 第4关 单总线CPU微程序控制器设计 第5关 采用微程序的单总线CPU设计 第6关 现代时序硬布线控制器状态机设计 第7关 现代时序硬布线控制器设计

紫荆鱼的博客 4万+

快速判断点在三角形内

△ABC,点P (向量 a,b,c,p) 收集了一些算法: 叉乘法 原理: 沿 △ABC 各有向边按一定方向走(顺时针或逆时针),判断点 P 是否在该边的某侧(右侧或左侧),若点 P 在三条边的同侧,则点 P 在 △ABC 内。 实现: 分别计算向量 AB、BC、CA 与向量 AP、BP、CP 的向量积(叉乘),若三个结果均同号(正或负,为零表示 P 在边上),则可得点 P

fangc的专栏 2109

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 440

判断点是否在三角形内

本文只是翻译和整理,原文在此http://www.blackpawn.com/texts/pointinpoly/default.html 概述 给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内。这是游戏设计中一个常见的问题。需要注意的是,这里假定点和三角形位于同一个平面内。 本文介绍三种不同的方法,由浅入深 一 内角和法 连接点P和三角形的三个顶点得到三条线段PA,PB和...

weixin_33726943的博客 382

Altium AD20的PCB板框绘制、定义板子形状、重新设置原点、放置尺寸标注

AD20的板框绘制与以前的版本不同,以前板框是在KeepOut层,而在AD20中没有这个层,绘制板框需要到机械层Mechanical1。 板框大小评估 首先进行板框大小评估。 工具 - 器件摆放 - 在矩形区域摆放。 之后通过鼠标框选矩形区域,元件会自动按照框选的范围进行摆放。这个操作可以重复多次,最后大致得出需要的板框尺寸。确定好后右键。 板框绘制,重新定义板子形状 点击下方的 Mechanical1,切换到机械层。放置线条,根据元件摆放来绘制PCB大致的形状,将元件完全包裹。

Mark_md的博客 10万+

核函数——原理剖析

(Kernel Function)是机器学习和统计学中的一个重要概念,特别是在支持向量机(SVM)和其他基于核方法的算法中。核函数的主要作用是通过一个隐式的方式将数据映射到一个高维空间,从而使得在该高维空间中线性不可分的问题变得线性可分。没关系,现在让我们抛开一切无关的事情,花20分钟来认真领会一下,核函数的原理到底是什么。然后我们来说什么什么样的函数有资格称为核函数,也就是上面说的一个函数的内积矩阵是半正定矩阵。中的分布如左图所示。中是不可实现的,那如果我们将原始空间中的所有样本点,通过一个映射关系。

m0_70254540的博客 1587

2017acm福建省赛FZU 2273 Triangles

Problem 2273 Triangles Accept: 34    Submit: 82 Time Limit: 1000 mSec    Memory Limit : 262144 KB Problem Description This is a simple problem. Given two triangles A and B, you should de

要做ADC 1517

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 648

FZU2273Triangles+(三角形)+第八届福建省大学生程序设计竞赛

Problem 2273 Triangles Accept: 47    Submit: 115 Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description This is a simple problem. Given two triangles A and B, you should de

hyyjiushiliangxing的博客 539

【YOLOv11多模态融合改进】(可见光+红外)涉及像素级融合、特征级融合(中期、中后期、后期)、决策级融合的完整配置步骤以及二次改进方案

在网络输入阶段将多模态数据直接合并,形成统一的特征表示。

Limiiiing的博客 1967

华为od 面试八股文_C++_04_含答案

华为od 面试八股文_C++_04_含答案

MISAYAONE的博客 2472

Unity 点乘(Dot)、叉乘(Cross)判断移动方向、朝向等向量问题

Unity 点乘(Dot)、叉乘(Cross)判断移动方向、朝向等向量问题项目中常会用到物体移动,追踪,判断两物体移动方向是否相同,两物体移动方向夹角,以及物体 A 朝 物体 B 顺时针方向还是逆时针方向移动。物体 A 在 物体 B 的前后左右方向。 下面通过点乘(Dot)、叉乘(Cross), 得到上面的需求结果。代码如下 using UnityEngine; using System.Coll................................................

lq 3万+

【QT开发教程】如何在Qt中使用Protobuf进行高效数据序列化

Protocol Buffers(Protobuf)是Google开发的一种语言中立、平台中立、可扩展的序列化机制,常用于数据交换和存储。Qt作为一个跨平台的C++图形用户界面应用框架,可以与Protobuf结合使用,实现高效的数据序列化和反序列化。本文将介绍如何在Qt中集成和使用Protobuf,包括基本概念、安装步骤、使用示例以及实际应用。

科技改变人类,技术成就未来 1438

FZUOJ-2273 Triangles

Problem 2273 Triangles Accept: 109Submit: 360 Time Limit: 1000 mSecMemory Limit : 262144 KB Problem Description This is a simple problem. Given two triangles A and B, you ...

diuliaoquan1673的博客 152

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

FZU2273-Triangles

TrianglesThis is a simple problem. Given two triangles A and B, you should determine they are intersect, contain or disjoint. (Public edge or point are treated as intersect.)Input First line contains

algzjh的博客 511

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

FZU - 2273 Triangles【计算几何】

Triangles 题意: 给出两个三角形,要求输出两三角形的位置关系,是相交、相离还是包含,题意十分简单。 这道题最先碰到是在今年的三月份,那时候还没学过计算几何写了很垃圾的代码,把它贴在后面好了 // #include<bits/stdc++.h> #include<cstdio> #include<vector> #include<queue> #include<algorithm> #include<iostream> #in

Tryna 252

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

FZU 2273 Triangles

题目:点击打开链接 题意:判断两个三角形的位置关系。 分析:先判断两个三角形的线段是否相交,再判断是否在存在包含关系,剩下的就是相离,相交可以用叉积判断,点是否在三角形内可以用面积恒等式判断,计算几何尽量避免除法,防止精度丢失,千万注意精度问题!!! 代码: #include&lt;algorithm&gt; #include&lt;iostream&gt; #include&lt;fs...

常胜将军的博客 331

Triangles FZU - 2273

题目大意:给你两个三角形,判断他们的关系:包含,相交,相离代码:#include <iostream> #include <cmath> #include <cstdio> #define ABS_FLOAT_0 0.0001 using namespace std;struct Point { double x,y; };struct Triangle { Point A,B,C

Zhangcan233的博客 580

FZU 2273 Triangles(判断线段相交和点在多变形内)

http://acm.fzu.edu.cn/problem.php?pid=2273解题思路: 先判断两个三角形是否存在一些点在另一个三角形内。如果有,则它们相交,否则判断它们线段是否相交(具体可以看看六芒星的特例),如果不相交,则相离,否则包含。判断线段相交的模板:bool Judge(point u1,point u2,point v1,point v2) //判断两条线段相交情

HJ 534

FZU - 2273 - Triangles - (向量相关)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2273 题意:给出两个三角形的三个顶点,判断两个三角形的位置关系(相交,互斥,包含)? 解析:涉及到很多向量的相关知识,用很多判断函数来判断两函数之间关系,具体见代码 向量点积:结果为数值,向量a点乘向量b=a.x*b.x+a.y*b.y=a的模*b的模*cosθ,向量间夹角为钝角返回为正,向量间夹角为直

Orz 288

第八届福建省大学生程序设计竞赛 FZU 2273 Triangles (计算几何)

题目大意:给定两个三角形六个顶点,判断两个三角形的关系(相交、相离、包含) 解题思路: (1)通过叉积判断点与线的关系,点与这条边对应的那个顶点位于这条边的同一侧,说明这个点在这条边的内测。如果一个点位于三条边的内侧,则这个点在三角形内。如果三个顶点都在这个三角形内,说明两个三角形是包含关系。 (2)通过判断线段相交的关系,可以确定两个三角形是否存在边相交 (3)其余情况说明两个三角形相离

wchhlbt的博客 545

fzu 2273 Triangles 计算几何

Problem 2273 Triangles Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description This is a simple problem. Given two triangles A and B, you should determine they are intersect,

老李2009 871

FZU2273:Triangles(计算几何 & 两三角形的位置)

This is a simple problem. Given two triangles A and B, you should determine they are intersect, contain or disjoint. (Public edge or point are treated as intersect.)InputFirst line contains an integer...

junior19的博客 706

Triangles (几何)

Triangles This is a simple problem. Given two triangles A and B, you should determine they are inte...

黑大帅的博客 1103

Triangles(VJ)补题

Triangles Accept: 373 Submit: 1263 Time Limit: 1000 mSec Memory Limit : 262144 KB Problem Description This is a simple problem. Given two triangles A and B, you should determine they are interse...

king9666的博客 302

Two Triangles FZU - 2270 (暴力+极角排序)

题目链接: https://cn.vjudge.net/problem/FZU-2270 题目大意: 给你n个点,然后每一次你从中选三个点,另一个人再选三个。在都能构成三角形的条件下,如果这两个三角形能通过平移,旋转和另外一个三角形完全重合,贡献加1,问你最终能有多少贡献? 具体思路: 延亮的思路,学习下 六个for循环枚举。 具体检验的时候,首先判断能不能构成三角形;然后...

diaomeijiao3430的博客 208
上一篇: 叉积
下一篇: Wand FZU - 2282 (组合数取模+错排公式)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值