在二维空间中对点进行排序,可能会遇见其中有些点是垂直于X轴 ,或者垂直于Y轴 ,这样就可能对于用反正切的值去比较产生考虑不完全的影响导致结果错误。这样我提出一个好的解决方案就是在这些点中找一个新的点来作为新的坐标点在进行用反正切的值判断,相当于把说有的点进行了一个坐标轴的旋转(如果不是凸多边形,存在旋转后反有多个点而垂直x轴或者垂直y轴的情况),本人很懒没有画出图只贴出了代码。本程序是在vs2010 C#语言 XNA环境下进行的。

using System;

using Microsoft.Xna.Framework;

using System.Collections;

using System.Collections.Generic;

namespace PointSort

{

#if WINDOWS || XBOX

static class Program

{

///

/// The main entry point for the application.

///

///

public static void TrianglSort(List list)

{

List atan = new List();

Vector3 min = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);

Vector3 max = new Vector3(float.MinValue, float.MinValue, float.MinValue);

foreach (Vector3 vec in list)

{

if (vec.X < min.X && vec.Y < min.Y) min = vec;

if (vec.X > max.X && vec.Y > max.Y) max = vec;

}

Vector3 Center = new Vector3((min.X + max.X) / 2, (min.Y + max.Y) / 2, 0);

for (int i = 0; i < list.Count; i++)

{

list[i] = new Vector3(list[i].X, list[i].Y, MathHelper.ToDegrees((float)Math.Atan2(list[i].Y - Center.Y, list[i].X - Center.X)));

}

for (int i = 0; i < list.Count - 1; i++)

for (int j = i + 1; j < list.Count; j++)

{

if (list[i].Z < list[j].Z)

{

Vector3 temp = list[j];

list[j] = list[i];

list[i] = temp;

}

}

}

static void Main(string[] args)

{

using (Game1 game = new Game1())

{

List vec = new List();

vec.Add(new Vector3(1, 1, 0));

vec.Add(new Vector3(1, -1, 0));

vec.Add(new Vector3(-1, 0, 0));

vec.Add(new Vector3(-1, -1, 0));

vec.Add(new Vector3(1, -1, 0));

TrianglSort(vec);

}

}

}

#endif

}

matlab 点顺时针排序,怎样对平面中的点进行顺时针或者逆时针排序相关推荐

  1. C语言 用链表对学号进行排序,求解C语言中建立一个对链表按照学号进行排序的问题...

    ========================== 功能:选择排序(由小到大) 返回:指向链表表头的指针 ========================== */ /* 选择排序的基本思想就是反复 ...

  2. 怎样对平面中的点进行顺时针或者逆时针排序

           在二维空间中对点进行排序,可能会遇见其中有些点是垂直于X轴 ,或者垂直于Y轴 ,这样就可能对于用反正切的值去比较产生考虑不完全的影响导致结果错误.这样我提出一个好的解决方案就是在这些点中 ...

  3. java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?

    我正在构建一个简单的 Java应用程序,涉及从csv文件中读取信息. csv文件中的信息以这种形式出现: "ID","Description" "AB ...

  4. 按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序

    在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前三列进行指定排序,也可以单击前三列的列标题进行排 27.1 问题描述 在做EBS表单开发时,虽然使用folder功能提 ...

  5. 张仰彪第二排序法_C语言中的最常用的两种排序算法你知道吗?

    冒泡法排序 核心思想:若有N个数从小到大排序,需进行N-1轮比较,第一轮每相邻的两个数据进行比较N-1次,最终挑选出最大的数,放到这一轮的最后位置:第二轮比较N-1-i次,挑选出这一轮最大的数,放入这 ...

  6. java 实体类属性排序_按照list中实体类的某一属性排序

    命名不规范引发的DropDownListFor无法选中 问题的引出: 项目中遇到和以下链接相同的问题,大概可以描述为:后台ViewData["KeyName"],前台Model属性 ...

  7. 在一个已经排序好的数组中插入一个数,按原来排序的规律

    思路:一个升序数组,插入一个数,若比最后一个数大,放到a[10]中.其他位置插入统一向后移一个. 注:if中最后加个break. #include<stdio.h> int main() ...

  8. matlab波的极化特性,Matlab GUI在电磁波极化特性教学中的应用

    科技创新导报 2018 NO.16Science and Technology Innovation Herald 创新教育 科技创新导报 Science and Technology Innovat ...

  9. matlab中投影,MATLAB在极射赤平投影中的应用

    文章编号: 100926825 (2010) 360357202 MATLAB在极射赤平投影中的应用 收稿日期: 20100822 作者简介:潘冀川 (1988) ,男 ,石家庄经济学院本科生 ,河北 ...

  10. matlab 动态图只能显示等平面吗,matlab平面浓度图

    matlab 动态图只能显示等平面吗,帮你快速入门MATLAB(基本知识篇),matlab平面坐标图,matlab平面浓度图 关于利用matlab制作三维图形的经典例子模板_营销/活动策划_计划/解决 ...

最新文章

  1. 第八届“数学、计算机与生命科学交叉研究” 青年学者云论坛(5月15日9:00-16:40)...
  2. 字符串转数字 sql_SQL注入·sqli-labs·基于错误的字符串/数字型注入(第1~2关)
  3. Android调用前置摄像头的方法
  4. 新型机器人模拟蜻蜓飞行可以乱真!
  5. ubuntu160.4+anaconda3 +tensorflow1.140 +keras2.2.5安装
  6. 理正地基基础计算机辅助设计的英文缩写,理正基础CAD软件介绍理正基础CAD软件介绍.pdf...
  7. 基于redis 内存数据库简单使用
  8. VoLTE业务端到端流程:IMS侧信令流程
  9. 如何在CentOS 7上安装Yarn
  10. 大家来找茬源码(微擎) -- 流量主
  11. 【Python 邮件合并 pandas mailmerge】
  12. 支持非对称命名空间访问的SPDK多路径验证
  13. SAP如何控制采购价格不显示(适用ME23N、ME2L、ME2M、ME2K、ME2J、ME2C、ME2B、ME2N等)
  14. Ubuntu安装ESPNET(搞了一个多月)
  15. SQLiteSpy软件学习sql语句Group by的各种用法。
  16. Datawhale打卡活动 Kaggle Spaceship Titanic Day3
  17. 意大利或将立法 禁止中小学校园携带手机
  18. 计算机考试成绩80分是统计指标值,某同学计算机考试成绩80分,这是统计指标值。...
  19. vue实现v-chart绑定数据
  20. 安装nodejs教程

热门文章

  1. 手游服务器架设用什么系统,架设手游用什么云服务器
  2. Python shift()
  3. 概念区分:灰度发布、蓝绿发布、滚动发布
  4. 用ftp上传服务器文件大小,ftp服务器上传文件大小
  5. Mac外接显示器问题解决
  6. python3自动发送邮件并添加附件
  7. 可行性研究报告计算机,计算机软件设计师:软件可行性研究报告[1]
  8. 宜人贷宜人蜂巢金融科技AI实践:蜂巢机器人
  9. 冰原服务器维护,怪猎OL9月20日0:00全区全服维护更新公告
  10. 《经济学原理》——读书笔记(一)