对于碰撞测试,我需要光栅线. bresenham算法几乎按照预期的方式工作,但有一个缺陷就是产生一条线:

我需要:

public boolean isInsideLine(int x1,int y1,int x2,int y2) {

final int dx = abs(x2 - x1),dy = abs(y2 - y1);

final int sx = x1 < x2 ? 1 : -1,sy = y1 < y2 ? 1 : -1;

int err = dx - dy;

while (true) {

if (isInside(x1,y1)) //Lookup in pixel array

return true;

if (x1 == x2 && y1 == y2)

break;

final int e2 = err << 1;

if (e2 > -dy) {

err -= dy;

x1 += sx;

}

if (e2 < dx) {

err += dx;

y1 += sy;

}

}

return false;

}

是否有我可以使用的其他行光栅化算法,或者有人知道如何修改bresenham吗?

也许它会很有用,我的非整数终点版本.它是GridMap类的一种方法,我用它来对几何形状进行空间索引,以加速2D地图中的碰撞检测.

int GridMap::insertLine( int lineId,double ax,double ay,double bx,double by ){

// get index of endpoints in GridMap

int ix = getIx( ax );

int iy = getIy( ay );

int ixb = getIx( bx );

int iyb = getIy( by );

// insert endpoints to GridMap

insert( lineId,ix,iy );

insert( lineId,ixb,iyb );

// raster central part of the line

double dx = fabs( bx - ax );

double dy = fabs( by - ay );

int dix = ( ax < bx ) ? 1 : -1;

int diy = ( ay < by ) ? 1 : -1;

double x=0,y=0;

while ( ( ix != ixb ) && ( iy != iyb ) ) {

if ( x < y ) {

x += dy;

ix += dix;

} else {

y += dx;

iy += diy;

}

insert( lineId,iy );

}

};

line java_java – Line Rasterization / 4-bresenham相关推荐

  1. 2022.11.15【bug笔记】|Error in FASTQ file at line 55: Line expected to start with ‘+‘, but found ‘G‘

    今天协助销售处理客户一个分析问题,感觉很多人都会遇到,在这里记录一下. 项目场景: 从测序公司下载测序原始数据,使用Trim galore进行质控分析. 问题描述 执行脚本 trim-galore - ...

  2. Pygame 官方文档 - Tutorials - 逐行的黑猩猩教程(Line By Line Chimp)

    逐行的黑猩猩教程(Line By Line Chimp) 作者: Pete Shinners 联系方式: pete@shinners.org 介绍(Introduction)        在pyga ...

  3. 如何注册Line账号?-Line账号/Line广告/Line好友

    今天主要给大家分享一下如何在国内注册Line账号,使用方法的一些小技巧,以及一些问题解答汇总. Line账号注册 首先要科学上网,在手机上安装Line App,然后开始注册Line账号.Line类似于 ...

  4. Hierarchical line matching based on Line–Junction–Line structure

    一.简介 一般的线匹配的方法分为两种:基于个体的和基于小组的.简单来说就是一次匹配一个还是一次匹配一组. 对于基于个体的匹配方法,主要是光度信息,这种方法主要都是基于匹配的线段之间都会存在一定的重叠部 ...

  5. 【BZOJ】3301: [USACO2011 Feb] Cow Line(康托展开)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3301 其实这一题很早就a过了,但是那时候看题解写完也是似懂非懂的.... 听zyf神犇说是康托展开, ...

  6. vty 虚拟终端连接 line vty 0 4 和line vty 5 15 区别

    在思科交换机Catalyst 2950上show run下发现有两个line vty line vty 0 4 和line vty 5 15 分别有相应密码 .. 请问这两个有什么区别? VTY是Ci ...

  7. LINE: Large-scale Information Network Embedding

    LINE算法意义: 1.适用于任意类型的网络,有向无向有权无权 2.清晰优化目标函数.维护一阶和二阶相似度 3.百万级和十亿级条边几个小时训练完 4.LINE是WWW2015引用量最高的文章 5.与D ...

  8. c++预处理命令 #line 用法

    c++预处理命令 #line 用法 #line #line 语法: #line line_number "filename" #line命令是用于更改__LINE__ 和 __FI ...

  9. HDU 6631 line symmetric(枚举)

    首先能想到的是至少有一对相邻点或者中间间隔一个点的点对满足轴对称,那么接下来只需要枚举剩下的点对是否满足至多移动一个点可以满足要求. 第一种情况,对于所有点对都满足要求,那么Yes. 第二种情况,有一 ...

最新文章

  1. AI一分钟|传谷歌正与腾讯等洽谈合作,欲在中国推云服务;国产超算运算速度或达每秒百亿亿次...
  2. qt 启动画面显示图片_用QT实现软件启动画面的效果,学习参考!
  3. 【机器学习入门到精通系列】推荐系统之协同过滤算法
  4. python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究
  5. js 计算任意凸多边形内最大矩形_题库 | 计算机视觉常见面试题型介绍及解答 第 7 期...
  6. struts入门超详细
  7. yii2 mysql update_yii2 + mysql 常用增删改查操作语法以及事务
  8. 深入探究VC —— 编译器cl.exe(2)【转】http://blog.csdn.net/wangningyu/article/details/4837419...
  9. 2021最新Java高频面试题,很适合大厂面试
  10. 52. 配置 Etag (13)
  11. 2020-07-05
  12. R12-表详解-总帐
  13. python 装饰器,登录小练习
  14. 渗透测试/应急演练过程中metasploit制作木马连接失败问题排查
  15. cad线性标注命令_CAD中线性标注的快捷键是什么?
  16. postman断言方法
  17. word中mathtype找不到OMML2MML文件
  18. PR软件有哪些辅助功能?Premiere Pro 的辅助功能介绍
  19. 蛋白质结构数据预处理基础(个人笔记)
  20. API系列(一):SMS API

热门文章

  1. mysql 去除重复 Select中DISTINCT关键字的用法(查询两列,只去掉重复的一列)
  2. Arcgis for android 100.4 getFieldType ()
  3. python六十七课——网络编程(基础知识了解)
  4. 序列中连续值之间的差值列表
  5. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
  6. Linux修改挂载目录名称
  7. 如何使用无线连接来使Android调试手机
  8. 利用socket实现java程序自动关闭
  9. 服务消费和负载(Feign)
  10. python下载指定页面的所有图片