怎么计算出一点是非在一个三角形内,上和外

勇敢的大树 2004-08-03 08:22:25
知道三角形的三顶点和这个点的x,y坐标,用什么方法计算,要求高效!
大家给几个思路吧
...全文
157 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphapaopao 2004-08-05
  • 打赏
  • 举报
回复
又找到一篇 http://bbs.chinagamedev.net/archive/index.php/t-5556.html
可能是比较优良的算法。
勇敢的大树 2004-08-05
  • 打赏
  • 举报
回复
能不能不用角度去算,效率太低
johnshao 2004-08-04
  • 打赏
  • 举报
回复
将三角形作为多边形来处理
alphapaopao 2004-08-04
  • 打赏
  • 举报
回复
楼上的那个速度太慢。
FAQ里面的还有 NEHE 里面的算法比较快。
LocalVar 2004-08-04
  • 打赏
  • 举报
回复
算法如下,自己优化

增加一个明显位于多边形外的点B,假设你的点是A,则做一条连接AB的线段,计算这条线段与多边形的几条边相交,奇数则点位于多边形内或多边形上(你应该知道如何判断内和上吧),偶数位于多边形外
DentistryDoctor 2004-08-04
  • 打赏
  • 举报
回复
判断是否在内用CRgn是否在上用数学的方法了,通过三角形三条边的点斜式方程判断点是否在直线上,上述两种情况能判断了,是否在三角形外了也就解决了。
wongflying 2004-08-04
  • 打赏
  • 举报
回复
该点p依次和三角形的三顶点p1、p2、p3求夹角,注意必须按照一定的顺序(顺时针或者逆时针),求出来最大的夹角大于180,则在外,等于180,在边上,小于180,则在里面。
syy64 2004-08-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3208/3208637.xml?temp=.1932947
simouse 2004-08-04
  • 打赏
  • 举报
回复
NEHE是什么
nlstone 2004-08-03
  • 打赏
  • 举报
回复
什么啊,这好像是我当年第一次复试时做过的上机题:(
对上机实现而言,用CRgn判最简单
lixiaosan 2004-08-03
  • 打赏
  • 举报
回复
http://bbs.chinagamedev.net/showthread.php?s=a434cbbe761f154b69b42a60767041aa&t=6783
alphapaopao 2004-08-03
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=32704


要学会查资料
黄冈中学高2数学教案直线的倾斜角和斜率及直线的方程 一、一周知识概述   本周是解析几何的开始,介绍了直线的斜率及倾斜角的定义,给直线斜率的计算公式.又重点学习了直线方程的点斜式、斜截式、两点式、截距式、一般式五种形式.通过本周的学习,要了解在平面解析几何中如何表示直线,以及直线的性质,了解解析几何的基本思想,了解用坐标法研究几何问题的方法.重点培养一种数形结合的能力,代数式与图形的相互转化,理论与实践相互统一,从感性认识提高到理性认识. 二、重难点知识归纳总结   直线的倾斜角和斜率的概念是本节的重点,直线方程的点斜式是求直线方程的基本形式,是求直线方程的重点.   斜率概念的学习和过两点的直线的斜率公式的建立,以及依据所给条件的异同与特点,合理选取直线方程的不同形式是本节的难点. (1)、直线的方程与方程的直线   以一个方程的解为坐标的点都是某条直线上的点,且这条直线上的点的坐标都是这个方程的解.这时,这个方程叫这条直线的方程,这条直线叫做这个方程的直线.   在平面解析几何里研究直线时,就是利用直线与方程这种关系建立直线的方程,并通过方程来研究直线的有关问题. (2)、直线的倾斜角与斜率   在平面直角坐标系中,对于一条与x轴相交的直线,如果把x轴绕着交点按逆时针方向旋转到和直线重合时所转的最小正角为 ,则 就叫做直线的倾斜角;当直线和x轴平行或重合时,规定此时直线的倾斜角为0°,因此,倾斜角的范围是0°≤ <180°   倾斜角是一个几何概念,直观的描述了直线对x轴正方向的倾斜程度.   倾斜角不是90°的直线,它的倾斜角的正切叫做这条直线的斜率.直线的斜率常用k表示,即k=tan ,直线的倾斜角为90°时,没有斜率. (3)、直线的斜率公式   在平面坐标系内,两点P1(x1,y1),P2(x2,y2)决定一条直线,当直线P1P2的倾斜角不为90°时,它的斜率公式为: .   斜率公式与两点的顺序无关, .   若y2=y1, x2≠x1,则直线P1P2与x轴平行或重合,k=0;若y2≠y1,x2=x1,则直线的倾斜角为90°,斜率不存在. (4)、直线方程的点斜式   若直线l经过点P1(x1,y1),且斜率为k,则l的方程为:y-y1=k(x-x1).   若l过P0(x0,y0)且与x轴平行或重合,则k=0,由点斜式有y=y0.   若l过P0(x0,y0)且与x轴垂直,则l的倾斜角为90°,没有斜率,此时直线方程不能用点斜式表示,应为x=x0. (5)、直线方程的斜截式   若已知直线l的斜率为k,与y轴的交点为P(0,b), 代入点斜式有:y-b=k(x-0),即y=kx+b.b是直线l在y轴上的截距,截距可以是任一实数,而距离只能是非负数.   求截距的方法:在直线l的方程中,令x=0,解y值,可得直线l在y轴上的截距;令y=0,解x,即得直线在x轴上的截距. (6)、直线方程的两点式   已知直线l经过P1(x1,y1),P2(x2,y2),(x1≠x2),则直线l 的方程为: .   当直线l没有斜率(x1=x2)或斜率为0(y1=y2)时不能用两点式计算. (7)、直线方程的截距式   已知直线l与x轴交点为(a,o),与y轴交点为(0,b),其中ab≠0,则直线l的方程为 .   已知l在坐标轴上的截距且不为零时,用截距式表示方程可以快速准确的画直线来. (8)、直线方程的一般式   直线方程的四种形式不能表示所有的直线,都有特殊情形需要单独讨论,可以用二元一次方程统一起来.   ①直线的方程都可以写成关于x,y的二元一次方程. 证明:在平面直角坐标系中,每一条直线都有唯一的倾斜角 与之对应. i)当 ≠90°时,方程可以写成y=kx+b的形式,即:kx-y+b=0; ii) 当 =90°时,它的方程可以写成x=x1的形式,即:x+0•y-x1=0.   ∴ 直线的方程可以写成关于x,y的二元一次方程的形式. ②任何关于x,y的二元一次方程都表示一条直线. 证明:关于x,y的二元一次方程的一般形式是   Ax+By+C=0 (其中A,B不同时为0).   i) 当B≠0时,可化为 ,它表示斜率为 ,在y轴上的截距为 的一条直线.   ii)当B=0时,A≠0,有 ,它可以表示一条与y轴平行或重合的直线.   ∴ 关于x,y的二元一次方程表示一条直线.   因此,我们把方程Ax+By+C=0(A,B不同时为0)叫做直线方程的一般形式.   直线方程的其它形式都可以化为一般式;在满足某些条件时,直线方程的一般式也可以化为其它形式. 2、本周所学内容的难点.   直线的方程和方程的直线的理解,斜率公式的建立,直线的方程的几种形式以及它们之间的相互转化,每一种方程所对应的直线的特征及要求.由给定直线上的点或斜率写直线的方程. 方程名称 方程形式 方程的局限性 点斜式 y-y0=k(x-x0) 不包括与x轴垂直的直线 斜截式 y=kx+b 不包括与x轴垂直的直线 两点式 不包括与坐标轴垂直的直线 截距式 (a,b≠0) 不包括与坐标轴垂直及过原点的直线 一般式 Ax+By+C=0 (A,B不同时为零)   3、直线方程形式的运用技巧   (1)一般地,已知一点通常选择点斜式;已知斜率通常选择斜截式或点斜式;已知截距或两点通常选择截距式或两点式.   另,从所求的结论来看,若求直线与坐标轴所围成的三角形面积或周长,则应选用截距式.   (2)待定系数法是求直线方程最基本、最常用的方法,但要注意选择形式,一般地,已知一待定斜率k,但应注意讨论斜率k不存在的情形,如果已知斜率k,一般选择斜截式,待定截距b.如果已知直线与坐标轴围成三角形问题题就选择截距式,待定横截距和纵截距.一般说来,几个系数待定就应列几个方程.   有的直线方程可以同时选用几种形式,但有的形式不同,导致的运算,繁简程度就不同.
LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO中求解如下的LP问题: 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 单 位 销地 运 价 产地 B1 B2 B3 B4 B5 B6 B7 B8 产量 A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7 6 7 3 9 2 7 1 43 A5 2 3 9 5 7 2 6 5 41 A6 5 5 2 2 8 1 4 3 52 销量 35 37 22 32 41 32 43 38 使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮 即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。 一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。 2.3 模型的集部分 集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性
课程解决的问题: 作为游戏行业或者图形学从业者,你是否面临以下问题: 到底openGL底层如何实现的? 到底矩阵操作变换是怎么做到的? 到底光栅化的算法以及原理是什么? 到底如何才能从3D世界投射到2D屏幕呢? 图形学有这么多的矩阵操作,到底如何推导如何应用呢? 学完这门课程,你应该就可以从底层了解一个初级的openGL图形接口如何实现,图形学最底层的封装到底面临哪些挑战;跟随我们一行一行写完代码,你就会得到一个迷你版本的openGL图形库,你可以深度体会图形从模型变换,观察矩阵变换,投影矩阵变换一直到光栅化纹理操作的全套模拟流程。 课程介绍: 本课程将带领学员不使用任何图形库,实现从0到1的图形学接口封装以及算法讲解,并且带领大家手敲代码,一行一行进行实现。 涵盖了(环境搭建,绘制点,Bresenham算法绘制完美直线,三角形拆分绘制算法,颜色插值算法,图片操作,图片二次插值放缩算法,纹理系统接口搭建及封装,矩阵操作理论以及实践,openGL类似接口封装,3D世界的图形学理论及接口封装等) 最终将带领大家通过C++实现一个3D世界的图形接口,方便所有人入门图形学,进行接下来的openGL接口以及GPU编程的学习   本课程为系列课程的第一步入门,且带领所有人进行实现,更加实用,可以让大家打牢图形学的基础知识及编程技能

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧