三点顺序acm68
来源:互联网 发布:网络与新媒体概论考研 编辑:程序博客网 时间:2024/05/17 18:45
三点顺序
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?
如:
图1:顺时针给出
图2:逆时针给出
<图1> <图2>
- 输入
- 每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示A,B,C三个点的横纵坐标。(坐标值都在0到10000之间)
输入0 0 0 0 0 0表示输入结束
测试数据不超过10000组 - 输出
- 如果这三个点是顺时针给出的,请输出1,逆时针给出则输出0
- 样例输入
0 0 1 1 1 30 1 1 0 0 00 0 0 0 0 0
- 样例输出
01
利用矢量叉积判断是逆时针还是顺时针。设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2 所组成的平行四边形的带符号的面积,即:P × Q = x1*y2 - x2*y1,其结果是一个标量。显然有性质 P × Q = - ( Q × P ) 和 P × ( - Q ) = - ( P × Q )。叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系: 若 P × Q > 0 , 则P在Q的顺时针方向。 若 P × Q < 0 , 则P在Q的逆时针方向。 若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。解释:a×b=(ay * bz - by * az, az * bx - ax * bz, ax * by - ay * bx) 又因为az bz都为0,所以a×b=(0,0, ax * by - ay * bx)根据右手系(叉乘满足右手系),若 P × Q > 0,ax * by - ay * bx>0,也就是大拇指指向朝上
所以P在Q的顺时针方向,一下同理。
#include<stdio.h>int main(){ double x1,y1,x2,y2,x3,y3; while(scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3)!=-1) { if(x1==0&&x2==0&&x3==0&&y1==0&&y2==0&&y3==0) { break; } printf(-(x2-x1)*(y3-y1)+(x3-x1)*(y2-y1)>0?"1\n":"0\n"); }}
0 0
- 三点顺序acm68
- 三点顺序
- NYOJ - 三点顺序
- 三点顺序
- acm-三点顺序
- NYOJ 三点顺序
- 68 三点顺序
- 南阳--三点顺序
- 三点顺序
- 三点顺序
- NYOJ-三点顺序
- nyist 三点顺序
- nyoj68三点顺序
- 三点顺序
- 三点顺序
- nyoj68 三点顺序
- nyoj 三点顺序
- 三点顺序
- 数据库-存储过程的in、out、inout模式
- OkHttp使用教程
- Node.JS核心模块之全局对象和常用工具
- 网络策略(networkpolicy随笔记)
- 百度地图开发(三)之地图控制 + 定位
- 三点顺序acm68
- 编辑PDF文件内容的方法
- 在MFC中使用OpenGL相关配置的整理总结
- 关于并发编程的疑问解析
- postgresql查看死锁
- 作用取得客户端的ip、地理信息、浏览器、本地真实IP
- windows 系统 oracle监听无法启动。
- CentOS 7.0安装配置Vsftp服务器
- 杭电OJ 2602 典型01背包问题