计算画布内旋转元素的边界坐标|百事通
svg,dom类的图形编辑器,在画布内编辑元素完成后,为了得到只包含元素的部分,去掉画布的留白,或者进行编组时,往往需要计算元素在画布内的边界坐标,重新生成输出元素的坐标
(资料图)
1、对于无旋转等几何变化的基本元素,计算元素的边界坐标是很容易的(以屏幕坐标为准)
如下图,只需遍历每个元素的四个顶点坐标比较即可;
假设已知元素css属性 left = x,top = y ,width = w ,height = h;
对于任意元素四个顶点坐标分别为,(左上,右上,左下,右下)
\[pointLT\ =\ (x,\ y),pointRT\ =\ (x\ +\ w,\ y)\]\[pointLB\ =\ (x,\ y + h),pointRB\ =\ (x+w, y + h)\]代码为
let minX = Infinity, minY = Infinity, maxX = -Infinity , maxY = -Infinity;elements.forEach(ele=>{ const points = [pointLT,pointRT, pointLB, pointRB ]; points.forEach(point=>{ minX = Math.min(minX, xx); maxX = Math.max(maxX, xx); minY = Math.min(minY, yy); maxY = Math.max(maxY, yy); })})实际开发中,编辑器往往会对元素会有旋转反转裁剪等几何变化,如下图为实验仪器的组合,其边界可能为最左侧的旋转的玻璃棒和右侧旋转的试管决定
为了需重 新计算单个仪器旋转后的坐标和边界,从而 那么变化后的坐标如何计算呢
2、带有旋转属性的元素坐标计算
以元素中心E点为中心建立坐标系
A"B"C"D"为ABCD旋转θ ,后的矩形,已A点为例,连接EA,EA",根据向量的旋转角度公式有
\[\overrightarrow{EA"}\ =\ (A_{x}*\cos\theta\ -\ A_{y}*\sin\theta,\ A_{x}*\sin\theta\ +\ A_{y}*\cos\theta)\]以上坐标是基于中心点坐标的,so可以用中心点的坐标E表示A"坐标,从而换算会屏幕坐标,(注意屏幕坐标的基是(0,1)(-1,0),故y需取负值)
\[A_{x}(屏幕坐标) = E_{x}(屏幕坐标) + A_{x}(对象坐标)\]\[A\_{y}(屏幕坐标) = - E\_{x}(屏幕坐标) + A\_{y}(对象坐标)\]更新上一段代码为:
let minX = Infinity, minY = Infinity, maxX = -Infinity , maxY = -Infinity;elements.forEach(ele=>{ const vertices = [pointLT,pointRT, pointLB, pointRB ]; // ... vertices.forEach((x,y)=>{ let xm = cx + (x - cx) * cos - (cy - y) * sin; let ym = cy - ((x - cx) * sin + (cy - y) * cos); minX = Math.min(minX, xm); maxX = Math.max(maxX, xm); minY = Math.min(minY, ym); maxY = Math.max(maxY, ym); })}) 相关阅读
精彩推荐
- 计算画布内旋转元素的边界坐标|百事通
- 醇亲王府_醇亲王 全球速讯
- 北京恭王府门票可以开发票吗? 资讯
- 宇新股份将于6月2日解禁6737.5万股-全球观点
- 众神派对好玩吗 众神派对玩法亮点介绍 每日热议
- 36岁博导要去太空出差了 天天要闻
- 怎么才能从秒弟升级成久哥啊?老王说,现在我天天锻炼,就做甩设备
- 幼儿园拖着不给退费怎么办(幼儿园拖着不退费找谁) 世界微动态
- A股食醋股票龙头有哪些?(2023/5/30)
- 万代MMO《蓝色协议》实机预告:组队战斗眼花缭乱-环球快报
- 二七区拼经济忙发展,“双轮驱动”构筑现代经济新优势
- 【热闻】信阳浉河社区民警殷俊:默默耕耘一线的“老黄牛”
- 国资委最新发声!-每日消息
- 每日消息!陕西省发布2023年第1号省总林长令 全年完成造林486.68万亩 种草32.86万亩
- 抓马!刘恺威女友主持芭莎,杨幂疑似避嫌故意缺席,网友:她不配
- 佐助六芒星怎么画(佐助的六芒星写轮眼是什么)|当前快讯
- 内蒙古固阳:以法治新举措提升营商环境软实力_全球微资讯
- 今日最新!太湖雪接待华兴控股集团等2家机构调研,公司坚持多渠道营销战略,通过线上线下联动发力一体化发展
- 环球热消息:三星官宣新机:F54 5G 将于 6 月 6 日发布 外观图放出
- 2023年5月30日起国内成品油价格按机制上调
- 粤化妆品工业总产值全国第一 正由“大体量”向“高质量”转型 世界实时
- 大渡口:“警+N”警务模式护航“夜间经济” 天天时快讯
- 乘舟观沧海 潜水看珊瑚 焦点热门
- 北向资金净买入6.49亿元,宁德时代、浪潮信息等获加仓 热点
- 当前观察:经典的电影排行(经典影片排行榜)
- 最新5年高考满分文妙语卷_对于最新5年高考满分文妙语卷简单介绍
- 原阳县发改委持续优化营商环境 助力经济高质量发展 环球热推荐
- 启迪设计:目前公司的光伏业务包括县域工商屋面及农村户用光伏电站建设 各项业务均在稳步有序推进中 环球快资讯
- 当年杀害刘志丹的人,曾被陈赓活捉过,但被我军优待。解放后,也没有被定罪,少见啊! 每日速读
- 天天消息!ETF收评|AI概念股午后爆发,游戏ETF大涨6%

(资料图)