- 浏览: 118714 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
下面的代码需要box2d!!!!!!!!!!!
import org.jbox2d.common.vec2;
public class polyonutil {<br> private static polyonutil instance;<br> private float a;<br> private float b;<br> private boolean x_axis;<br> private boolean y_axis;<br> private float axis;<br> float i;
public static polyonutil getinstance() {<br> if (instance == null) {<br> instance = new polyonutil();<br> }<br> return instance;<br> }
public void setab(vec2 point1, vec2 point2) {<br> if (point1.x == point2.x) {<br> if (point1.y != point2.y) {<br> y_axis = true;<br> axis = point1.x;<br> }<br> } else if (point1.y == point2.y) {<br> if (point1.x != point2.x) {<br> x_axis = true;<br> axis = point1.y;<br> }<br> } else {<br> y_axis = false;<br> x_axis = false;<br> a = (point1.y - point2.y) / (point1.x - point2.x);<br> b = point1.y - point1.x * a;<br> }<br> }
public byte getflag(vec2 point) {<br> if (y_axis) {<br> if (point.x > axis) {<br> return 1;<br> } else if (point.x < axis) {<br> return -1;<br> } else {<br> return 0;<br> }
} else if (x_axis) {<br> if (point.y > axis) {<br> return 1;<br> } else if (point.y < axis) {<br> return -1;<br> } else {<br> return 0;<br> }<br> } else {<br> i = point.y - a * point.x - b;<br> if ((point.y - a * point.x - b) < 0) {<br> return -1;<br> } else if ((point.y - a * point.x - b) > 0) {<br> return 1;<br> } else {<br> return 0;<br> }<br> }<br> }<br>}
//下面的函数判断一群点是否构成凸多边形
public boolean ishull(vec2[] mousestroke){
int mousestrokelength=mousestroke.length;
for (int i = 0; i < mousestrokelength; i+=2) {<br> polyonutil.getinstance().setab(mousestroke[(i) % mousestrokelength],<br> mousestroke[(i + 1) % mousestrokelength]);<br> for (int j = 0, k = 0; j < mousestrokelength; j++) {<br> if (j == i || j == (i + 1)) {<br> continue;<br> } else {<br> flag[k] = polyonutil.getinstance().getflag(mousestroke[j<br> % mousestrokelength]);<br> k++;<br> }<br> }<br> for (int l = 0; l < flag.length - 1; l++) {<br> if (flag[l] * flag[l + 1] < 0) {<br> // ao 当是凹多边形时候<br> return false;<br> }<br> }<br> }
return true;
}
import org.jbox2d.common.vec2;
public class polyonutil {<br> private static polyonutil instance;<br> private float a;<br> private float b;<br> private boolean x_axis;<br> private boolean y_axis;<br> private float axis;<br> float i;
public static polyonutil getinstance() {<br> if (instance == null) {<br> instance = new polyonutil();<br> }<br> return instance;<br> }
public void setab(vec2 point1, vec2 point2) {<br> if (point1.x == point2.x) {<br> if (point1.y != point2.y) {<br> y_axis = true;<br> axis = point1.x;<br> }<br> } else if (point1.y == point2.y) {<br> if (point1.x != point2.x) {<br> x_axis = true;<br> axis = point1.y;<br> }<br> } else {<br> y_axis = false;<br> x_axis = false;<br> a = (point1.y - point2.y) / (point1.x - point2.x);<br> b = point1.y - point1.x * a;<br> }<br> }
public byte getflag(vec2 point) {<br> if (y_axis) {<br> if (point.x > axis) {<br> return 1;<br> } else if (point.x < axis) {<br> return -1;<br> } else {<br> return 0;<br> }
} else if (x_axis) {<br> if (point.y > axis) {<br> return 1;<br> } else if (point.y < axis) {<br> return -1;<br> } else {<br> return 0;<br> }<br> } else {<br> i = point.y - a * point.x - b;<br> if ((point.y - a * point.x - b) < 0) {<br> return -1;<br> } else if ((point.y - a * point.x - b) > 0) {<br> return 1;<br> } else {<br> return 0;<br> }<br> }<br> }<br>}
//下面的函数判断一群点是否构成凸多边形
public boolean ishull(vec2[] mousestroke){
int mousestrokelength=mousestroke.length;
for (int i = 0; i < mousestrokelength; i+=2) {<br> polyonutil.getinstance().setab(mousestroke[(i) % mousestrokelength],<br> mousestroke[(i + 1) % mousestrokelength]);<br> for (int j = 0, k = 0; j < mousestrokelength; j++) {<br> if (j == i || j == (i + 1)) {<br> continue;<br> } else {<br> flag[k] = polyonutil.getinstance().getflag(mousestroke[j<br> % mousestrokelength]);<br> k++;<br> }<br> }<br> for (int l = 0; l < flag.length - 1; l++) {<br> if (flag[l] * flag[l + 1] < 0) {<br> // ao 当是凹多边形时候<br> return false;<br> }<br> }<br> }
return true;
}
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 985[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1524摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 595金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 731<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 914sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1221据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3490<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1425[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 698<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 935<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 960这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 767在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 776第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 901::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 965<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 702</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 860<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 749JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 848<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1122偶尔出现这个错误: <span> < ...
相关推荐
在计算机图形学中,判断一个点是否位于一个多边形内部是一项基本任务,这对于游戏开发、地理信息系统、图像处理等领域都非常重要。本知识点将详细介绍如何在Go语言中实现这个功能,支持凸多边形和凹多边形。我们将...
在某些算法和应用中,处理凹多边形可能会带来复杂性,因此有时需要将凹多边形转换为由多个凸多边形组成的集合,这个过程称为凸分解。 标题"凹多边形转凸多边形VC6"暗示我们这是一个使用Visual C++ 6.0开发的程序,...
通过输入n个点判断这n个点能否构成凸多边形,是输出是否则输出否!
最小凸多边形生成算法是一种在计算机图形学中常见的几何处理技术,它的目的是找到一个包含一组给定点的最小凸包。这个算法在很多领域都有应用,例如数据简化、形状识别、碰撞检测等。Qt是一个跨平台的应用程序开发...
计算几何计算点到凸多边形距离代码 已在各大oj在线测评通过
"凸多边形三角划分"是一个在计算机图形学领域中常见的问题,特别是在三维建模、游戏开发和物理模拟等场景中。这个问题的目标是将一个凸多边形分割成多个不相交的三角形,这些三角形能够无间隙地覆盖整个多边形。这种...
2. **单共点边情况**:在特殊情况下,最小面积包围盒中的一边(称为单共点边)的中点会与凸多边形的某顶点重合。 基于这些结论,研究者设计了一种时间复杂度为O(n^4)的算法,能够有效地构造出凸多边形的最小面积凸...
凸多边形最优三角剖分是一种在计算机图形学和计算几何领域中常见的问题,它涉及到如何将一个凸多边形分割成尽可能少的互不相交的三角形,同时满足某些优化目标,如最小化某种权值之和,如边界长度、三角形面积等。...
在几何学中,凸多边形是一个多边形,其中任意两点之间的线段完全位于多边形内部或边界上。在OpenCV中,我们可以使用点集来表示多边形,并通过一系列的点连接形成封闭的图形。 创建随机凸多边形通常涉及以下几个步骤...
在二维空间中,一个凸多边形是由一系列点(顶点)连接形成的闭合图形,其中任意两点之间的连线都在多边形内部。如果从多边形外部向内射入的任何直线都会与多边形的边界交于连续的两点或不相交,那么这个多边形就是凸...
了解了凸多边形顶点排序的概念后,我们可以利用这个知识来解决更复杂的问题,如判断点是否在多边形内、求多边形面积、计算多边形周长、以及在游戏和物理模拟中的碰撞检测等。在实际项目中,对凸多边形的高效处理是...
凸多边形面积 【问题描述】 给出平面上一组顶点的坐标,计算出它们所围成的凸多边形的面积. 输入数据表示了如图所示的四边形。其面积为5.00。 评分标准: 本程序允许使用数学库函数,如果你的输出与标准...
首先,我们要明确凸多边形的定义:一个多边形如果从任何内部点出发,到所有边界点的连线都位于多边形内部,那么它就是凸多边形。例如,一个正方形或一个圆形都是凸多边形的例子。 在凸多边形的三角剖分中,每增加一...
在几何学中,一个凸多边形是所有顶点都在同一边的多边形,这意味着从多边形内的任何点向边画直线都不会穿过多边形。在OpenCV中,我们可以使用点集来表示一个凸多边形,每个点由(x, y)坐标对定义。 创建凸多边形的...
本文档主要探讨了三个关键概念:凸多边形的判断、点是否位于多边形内部的检测以及求一个点到直线的距离。以下是这三个方面的详细解释: 一、凸多边形判断 在二维平面上,一个凸多边形是由一系列连续的线段(边)围...
总之,本篇论文研究提供了关于凸多边形直径求解问题的新算法,该算法在实现过程中可能涉及到中轴的快速求解、顶点最近点问题的高效处理以及对凸多边形几何性质的深刻理解。算法的高效性表明它有潜力在计算机图形学...
在计算机图形学中,判断一个点是否位于一个多边形内部是一项基本任务,尤其在MFC(Microsoft Foundation Classes)框架下开发图形用户界面时。本文将详细介绍如何使用射线法(也称为穿越法或Winding Number Test)来...
在实际编程中,可能还需要处理一些边界情况,例如检查输入的点集是否真的构成了一个凸多边形,或者处理点集为空或只有一个点的情况。此外,如果点集是无序的,可能需要先将其排序,比如按X坐标或Y坐标排序,然后再...