• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 大量格点数中给定一个点,画半径为R的圆,得到圆中各个格点的坐标

大量格点数中给定一个点,画半径为R的圆,得到圆中各个格点的坐标

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了如图给定一个半径,如图给定一个半径为2,给定关键字不在字典中,给定,给定下面一列分式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:大量格点数中给定一个点,画半径为R的圆,得到圆中各个格点的坐标
描述:

如下图所示:圆心不一定会落在格点(每个格点都有坐标)上。格点的数据量很大,不太可能用最笨的全局利用圆公式进行与R比较得出圆内的各个格点的坐标。各位特别是搞计算机图形学(CG)的朋友,有没有比较好的算法,需要效率比较高。获取可以给出相关资料,我自己去看。

jquery 得到鼠标坐标,按键精灵得到窗口坐标,得到控件的坐标,范围找图得到坐标,在平面直角坐标系中,极坐标,平面直角坐标系,坐标拾取系统,excel图表双坐标


解决方案1:

自行搜索 "Breshmen中点画圆法"
讲的是给半径和坐标如何快速求解第一象限上1/8半圆点的坐标,其余通过镜像计算
任意计算机图形学教材中应该都有详解

解决方案2:

For x,y,z in [-r, r]:
     if x^2+y^2+z^2-r^2<0
         (x,y,z)is within sphere
     Vice versa

可以写在 shader 里,另外如果如果球的坐标不在原点,加一个平移矩阵挪到那个点就好了。

解决方案3:

不知道你这个算法要用在什么领域里?
实际上,在计算机图形学里,这种问题一般都是用最笨的用R暴力计算的方法的,因为这个问题高度并行,每一个点是否在圆内部都和另一个点是没有关系的,因此非常适合GPU计算。写个GLSL的示例。(未调试,不保证正确。)

in vec2 vertex;
out int inside;
uniform vec2 center;
uniform double r;
float distance(vec2 a, vec2 b)
{
//略
}
void main(void)
{
if(distance(center,vertex)>r)
inside = 0;
else 
inside = 1;
}

然后用一个函数把格点数组塞进显存,这个shader就会自动并行处理所有的点并返回每个点是否在圆内。有没有更好的CPU算法我不知道,但是GPU处理这样高度并行的数据一般非常高效,很难成为效率瓶颈。

解决方案4:

说一个思路,假设输入数据是三个浮点数X, Y, R表示圆心坐标和半径,那么满足在圆内的整数点的X'坐标在[X-R, X+R]之中,对于每一个X',二分出满足条件的最小纵坐标Y'和最大纵坐标Y'',则对于同一个X',Y'到Y''之间所有的Y均满足条件。

解决方案5:

建空间索引,方法很多比如geohash

解决方案6:

如果我理解的没错的话,你的问题是,格点是固定的而且很大,而你的圆就是你的输入,给定一个圆,找出落在里面的格点。
可以先把问题转化成找 “落在圆的外切矩形的那些点”。这个问题相对好做,比如对格点建索引,KD-Tree,quad-tree 什么的。之后再遍历一遍,用圆的方程筛掉不满足的点。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 大量格点数中给定一个点,画半径为R的圆,得到圆中各个格点的坐标

相关文章

  • 2017-06-07 MacOSX下重新安装mysql提示“启动器遇到了一个错误”
  • 2017-06-07 3d电视怎么看3d电影Python:怎么存储3D模型?(多面体)
  • 2017-06-07 (python)django中的User类应该怎么用
  • 2017-06-07 使用七牛https协议的自定义域名加载资源,浏览器提示存在不安全内容
  • 2017-06-07 用Box2D创建世界时,出现报错怎么办?
  • 2017-06-07 一个关于python的问题
  • 2017-06-07 (python)使用flask-migrate迁移数据库出错!error:toomanyarguments
  • 2017-06-07 python标准库中的asynorce怎么用,上面的列子有些看不懂?
  • 2017-06-07 头发颜色渐变想要生成一组三维的颜色渐变数据?
  • 2017-06-07 将一个给定数字的所有位相加直到数字最后只剩下一位的算法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 构造函数构造函数不可以私有化吗?
    • 关于python倒排索引的问题
    • 七牛put_file中的mime_type没用吗?
    • python怎样批量生成函数?
    • redis可以实现类似mysql的高级排序吗?
    • 问个有关版本命名的问题
    • B/SSAAS以后到底能不能成为主流?
    • laravel5在模板中如何不通过控制器传送变量方式获取访问的路由?
    • php5下载PHP5的类实例变量的声明问题
    • 关于Python中将ASCII码或者Unicode码转十六进制的代码解释

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有