当前位置: 首页 > news >正文

【水】tyvj1523 平面几何入门

大意:给出三角形的三个顶点,求点X在其的内外还是边界上。

入门题,看程序吧。

program p1523;

type
 point=record
   x,y:double;
 end;
 vector=point;

Var
 a,b,c,x:point;
 ans:longint;

procedure readpoint(var p:point);
var
 s:string;
 code:longint;
  begin
  readln(s);
  val(copy(s,2,pos(',',s)-2),p.x,code);
  val(copy(s,pos(',',s)+1,length(s)-pos(',',s)-1),p.y,code);
  //writeln('(',p.x,',',p.y,')');
end;

function minus(a,b:point):vector;begin with minus do begin x:=a.x-b.x;y:=a.y-b.y; end; end;
function max(a,b:double):double;begin if a>b then exit(a);exit(b); end;
function min(a,b:double):double;begin if a<b then exit(a);exit(b); end;
procedure getans(P:longint);begin if ans=0 then ans:=p; end;
function cross(a,b:vector):double;begin exit(a.x*b.y-a.y*b.x); end;
function pinline(p,a,b:point):boolean;begin exit((p.x>=min(a.x,b.x)) and (p.x<=max(a.x,b.x))); end;
function equal(a,b:vector):boolean;begin exit((a.x=b.x) and (a.y=b.y)); end;

  begin
  readpoint(a);
  readpoint(b);
  readpoint(c);
  readpoint(x);
  ans:=0;
  if equal(x,a) or equal(x,b) or equal(x,c) then getans(4);
  if cross(minus(b,a),minus(x,a))=0 then
    if Pinline(x,a,b) then getans(3) else getans(2);
  if cross(minus(c,a),minus(x,a))=0 then
    if Pinline(x,a,c) then getans(3) else getans(2);
  if cross(minus(c,b),minus(x,b))=0 then
    if Pinline(x,b,c) then getans(3) else getans(2);
  if (cross(minus(b,a),minus(x,a))*cross(minus(b,a),minus(c,a))>0) and (cross(minus(c,a),minus(x,a))*cross(minus(c,a),minus(b,a))>0) and (cross(minus(c,b),minus(x,b))*cross(minus(c,b),minus(a,b))>0) then getans(1) else getans(2);
  writeln(ans);

end.

 

转载于:https://www.cnblogs.com/htfy/archive/2013/05/07/3065553.html

相关文章:

  • web标准化(下)
  • Java环境搭建与配置
  • 【JS第17期】单体内置对象
  • Delphi编程地一些小程序
  • 乐观锁和悲观锁
  • Linux初始设置
  • PostgreSQL 11 preview - 分页内核层优化 - 索引扫描offset优化(使用vm文件skip heap scan)...
  • linux下jdb远程调试tomcat源码
  • PostgreSQL 11 preview - pgbench 支持大于1000链接(ppoll()代替select())
  • 数字操作符九度OJ 1019 简单计算器
  • NO1 ip-systemctl-fdisk
  • 执行对象cocos2d-x 2.x action动作整理集合
  • MySQL主从复制介绍
  • C# 使用GDI+绘制漂亮的ToolStrip和StatusStrip皮肤(转载)
  • Win32编程点滴3 - 简单ActiveX控件的使用
  • JavaScript-如何实现克隆(clone)函数
  • .pyc 想到的一些问题
  • Cookie 在前端中的实践
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • github从入门到放弃(1)
  • happypack两次报错的问题
  • laravel5.5 视图共享数据
  • rabbitmq延迟消息示例
  • React组件设计模式(一)
  • webgl (原生)基础入门指南【一】
  • WePY 在小程序性能调优上做出的探究
  • 对象引论
  • 码农张的Bug人生 - 初来乍到
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 算法---两个栈实现一个队列
  • 听说你叫Java(二)–Servlet请求
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ionic入门之数据绑定显示-1
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 交换综合实验一
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Panda3d 碰撞检测系统介绍
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十三)Flask之特殊装饰器详解
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 项目指定SDK版本
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 简单实现MD5
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net接口调试与案例
  • .NET精简框架的“无法找到资源程序集”异常释疑