点和直线的关系

简介: 点和直线的关系

题目描述


平面直角坐标系中有一个点 CC 和一条直线 ABAB ,求点 CC 和直线 ABAB 的位置关系。

输入描述

第一行输入一个 TT ,代表测试数据量

每组测试数据输入有三行,每行一个实数坐标 (x, y)(x,y) 分别代表 A, B, CA,B,C 三个点。

1≤T≤10^3,−10^5≤x,y≤10^5。

输出描述

如果点 C 在直线 AB 上, 输出IN , 如果点 C 在直线 AB 左侧,输出L, 如果点 C 在直线 AB 右侧输出R。

样例输入

样例输出

思路


我们首先介绍一个概念:叉积

叉积是两个矢量模的乘积再乘夹角正弦,经过推导可以发现两个向量A(x1,y1),B(x2,y2)的叉积为:

                                               x1∗y2−x2∗y1

在本题中我们输入三个点的坐标,在函数中直接计算向量CA,CB的值,再带入到叉积的计算中,算出叉积,这个函数实际上求的是CA*CB=|CA||CB|sinθ


1. def Cross(A,B,C):
2. return (A[0]-C[0])*(B[1]-C[1])-(B[0]-C[0])*(A[1]-C[1])


我们注意Cross的正负是有特殊含义的。如下图,Multi即为Cross,以p0为参考点,下图为向量p0p1和p0p2的叉积。如果Cross大于0,则p0p2在p0p1的逆时针方向,p0在p1p2的左边。反之,如果Cross小于0,则p0p2在p0p1的顺时针方向,p0在p1p2的右边。特殊的,当Cross等于0,p1、p2、p0三点共线。

原理:A*B= |A|*|B|sinθ,其中这个角度可以想象为平面中有一坐标,它的值就是角P2P0x-角P1P0x的值。而我们题目中的要求的方向是A->B,即上图中P1->P2,所以当Cross>0,说明c在AB左边,<0,说明在右边。


代码


1. def Cross(A,B,C):
2. return (A[0]-C[0])*(B[1]-C[1])-(B[0]-C[0])*(A[1]-C[1])
3. 
4. def area(p1,p2,p3):
5.     s=Cross(p1, p2, p3)
6. if s>0:
7.         print("L")
8.     elif s<0:
9.         print("R")
10. else:
11.         print("IN")
12. 
13. t=int(input())
14. for i in range(t):
15.     a=tuple(map(float,input().split()))
16.     b=tuple(map(float,input().split()))
17.     c=tuple(map(float,input().split()))
18. area(a, b, c)
目录
相关文章
|
传感器 编解码 监控
|
10月前
|
弹性计算 数据库 对象存储
阿里云2核4G5M199元云服务器选购入口在哪?3个可购买入口参考
阿里云服务器通用算力型u1实例(ecs.u1-c1m2.large)2核4G5M带宽80G ESSD Entry云盘特惠价199元1年,是阿里云“99计划”活动中的一款云服务器,不过随着目前阿里云部分活动内容的更新,有部分用户找不到这款云服务器的购买入口了,本文为大家整理了3个目前有效的购买入口,大家可自行选择。
|
6月前
|
存储 API 数据安全/隐私保护
Python 自动化爬取网易云音乐歌手歌词实战教程
Python 自动化爬取网易云音乐歌手歌词实战教程
|
6月前
|
人工智能 自然语言处理 数据可视化
OpenClaw 2.6.6 Windows 一键安装部署教程(技术分享喜欢的可以看一下)
OpenClaw(小龙虾)是GitHub星标超28万的开源“数字员工”,支持Windows一键部署,5分钟零代码本地运行。无需配置环境,内置全部依赖,可自动执行文件整理、浏览器操作、邮件发送等任务,全程可视化,隐私安全不联网。
|
10月前
|
存储 弹性计算 监控
企业级网盘搭建:基于ECS与OSS的对象存储管理与权限控制
本文介绍基于阿里云ECS和OSS搭建企业级网盘的完整方案,涵盖高可用架构、智能存储分层、精细化权限控制与成本优化。支持百人并发、数据11个9持久性,月成本约1750元,助力企业实现安全高效的文件管理与共享。
|
10月前
|
XML JSON 前端开发
AJAX 快速上手指南
本文介绍AJAX核心原理及原生JS、jQuery、Axios实现方式,涵盖请求流程、跨域解决方案与实战示例,助你零基础快速掌握无刷新数据交互技术。
|
算法 Unix 程序员
程序员行业的学历门槛与天赋密码:揭开大厂招聘的真相·优雅草卓伊凡
程序员行业的学历门槛与天赋密码:揭开大厂招聘的真相·优雅草卓伊凡
1077 3
程序员行业的学历门槛与天赋密码:揭开大厂招聘的真相·优雅草卓伊凡
|
缓存 前端开发 中间件
go语言中Web框架
【10月更文挑战第22天】
432 4
|
Ubuntu 数据库
|
存储 Serverless 数据安全/隐私保护
使用 Python 获取大文件的 MD5 哈希值
【8月更文挑战第27天】
846 2