如何在Corona SDK中精确地定位多边形?(相对于已知顶点 - 问题是它会创建自己的中心点)
2020-3-2 22:41:6
收藏:0
阅读:94
评论:2
问题:如何将多边形相对于其中一个已知顶点定位?
换句话说,我该如何计算自动生成的多边形中心相对于其中一个已知顶点(即在路径中使用)的位置?
例如:将特定形状放置在地图上,将其制作成多边形,然后想要在地图上定位它,但是如果不知道其 Corona 引擎创建的中心在哪里,无法精确进行定位。从 API 提取:“本地原点位于多边形的中心,锚点初始化为此本地原点。”
PS 实际上我在想是否应该使用线条并添加点来创建多边形,但也许在这种情况下无法添加背景色(?)
点赞
用户1523466
我在上面的解决方案上使用了一种变体,因为我无法让它起作用。本质上,我找到了每个维度中的最小顶点坐标,并将它们添加到多边形位置中。通过将它们与 contentBounds 位置进行比较,我可以计算出我认为最小值应该在哪里与它们实际在哪里之间的差异。
local min_x = math.huge
local min_y = math.huge
for v = 1, #vertices, 2 do
min_x = math.min(min_x, vertices[v])
min_y = math.min(min_y, vertices[v + 1])
end
local poly = display.newPolygon(x, y, vertices)
local offset_x = (x + min_x) - poly.contentBounds.xMin
local offset_y = (x + min_y) - poly.contentBounds.yMin
poly:translate(offset_x, offset_y)
2019-05-23 10:15:13
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
corona计算的中心点是多边形边框的中心点。假设您有一个表格,其中存储了多边形的所有点,格式如下:
local polygon = {x1,y1,x2,y2,...,xn,yn}1)要找到原始点的边界框,遍历所有点; 最小的x和最小的y值将给您左上角点的坐标; 最大的x和y值是右下角点。
local minX = -math.huge local minY = -math.huge local maxX = math.huge local maxY = math.huge for i=1, #polygon, 2 do local px = polygon[i] local py = polygon[i+1] if px > maxX then maxX = px end if py > maxY then maxY = py end if px < minX then minX = py end if py < minY then minY = py end end2)找到这个边界框的中心点:
local centerX = (maxX - minX)/2 local centerY = (maxY - minY)/23)将中心点添加到左上角点
local offsetX = centerX + minX local offsetY = centerY + minY4)添加此偏移量到
coronapolygon以将其放置在与原始多边形相同的位置。应该可以工作,但我还没有测试它。让我知道。