• Creator3.x 绘制六边形


     绘制六边形

    1. /** 绘制六边形集合并平铺 */
    2. private initSexAngles() {
    3. let _node = new Node();
    4. _node.parent = find("bg", this.node);
    5. _node.layer = Layers.Enum.UI_2D;
    6. _node.position = Vec3.ZERO;
    7. G.tool.getOrAddCompent(_node, UITransform).contentSize = new Size(600, 600);
    8. // 添加绘制组件
    9. let _graphics = G.tool.getOrAddCompent(_node, Graphics) as Graphics;
    10. _graphics.lineWidth = 2;
    11. _graphics.strokeColor = new Color(255, 255, 0);
    12. _graphics.fillColor = new Color(255, 255, 0);
    13. _graphics.lineJoin = 2;
    14. _graphics.lineCap = 0;
    15. let _startPos = new Vec3(-300, -300);
    16. let radius = 50;
    17. /** 中心点到线段的垂直距离 */
    18. let halfDis = Math.sqrt(radius * radius - 1 / 2 * radius * 1 / 2 * radius);
    19. for (let i = 0; i < 10; i++) {
    20. for (let j = 0; j < 10; j++) {
    21. let _pos = new Vec3(_startPos.x + (1 / 2 + 1) * radius * i, _startPos.y + 2 * halfDis * j + (i % 2 ? halfDis : 0));
    22. this.calcEachSexAngle(_graphics, _pos, 50);
    23. }
    24. }
    25. _graphics.stroke();
    26. }
    27. /** 画一个六角形 */
    28. private calcEachSexAngle(_graphics: Graphics, pos: Vec3 = Vec3.ZERO, radius: number = 50) {
    29. let angle = 2 * Math.PI;
    30. let eachAngle = angle / 6;
    31. /** 中心点到线段的垂直距离 */
    32. let halfDis = Math.sqrt(radius * radius - 1 / 2 * radius * 1 / 2 * radius);
    33. // 左上角第一个点;
    34. _graphics.moveTo(-1 / 2 * radius + pos.x, halfDis + pos.y);
    35. // 左角
    36. _graphics.lineTo(-radius + pos.x, pos.y);
    37. // 左下角
    38. _graphics.lineTo(-1 / 2 * radius + pos.x, -halfDis + pos.y);
    39. // 右下角
    40. _graphics.lineTo(1 / 2 * radius + pos.x, -halfDis + pos.y);
    41. // 右角
    42. _graphics.lineTo(radius + pos.x, pos.y);
    43. // 右上角
    44. _graphics.lineTo(1 / 2 * radius + pos.x, halfDis + pos.y);
    45. // 闭合角度
    46. _graphics.close();
    47. // 绘制当前或已经存在的路径
    48. }

    效果如下图 

     

  • 相关阅读:
    干货 | 携程 SOA 的 Service Mesh 架构落地
    MySQL之——崩溃-修复损坏的innodb:innodb_force_recovery
    Linux上安装FTP
    使用webSocket Springboot vue实现客户端与服务端通
    Effective java 总结11 - 序列化
    物联网设备通信
    【华为OD机试真题 JS】字符串分割(二)
    7 切片及应用
    珠宝加工厂:我的成本下降空间在哪里?
    无涯教程-JavaScript - INT函数
  • 原文地址:https://blog.csdn.net/W_han__/article/details/127126324