微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用matter.js画一个半圆?

如何解决如何用matter.js画一个半圆?

我正在使用 matterjs 库,太棒了!

我想弄清楚如何绘制这样的半圆:

enter image description here

我尝试了 Bodies.circleBodies.rectangleBodies.polygon,但没有成功。

看起来很简单的形状,但我不知道是否可以用库画一个半圆。

任何推荐都会很棒!

解决方法

SVGs 是一种方法:

const engine = Matter.Engine.create();
const render = Matter.Render.create({
  element: document.body,engine: engine,});
const bodies = [
  Matter.Bodies.rectangle(
    400,210,810,60,{isStatic: true,angle: 0.0}
  ),...Array(50).fill().map(() => {
    const path = document.querySelector("svg > path");
    const body = Matter.Bodies.fromVertices(
      Math.random() * innerWidth,// x
      0,// y
      Matter.Svg.pathToVertices(path),// vertexSets
      {},// options
      true,// flag internal
    );
    const scale = Math.random() / 2 + 0.2;
    Matter.Body.scale(body,scale,scale);
    return body;
  }),];
const mouseConstraint = Matter.MouseConstraint.create(
  engine,{element: document.body}
);
Matter.World.add(engine.world,[...bodies,mouseConstraint]);
Matter.Runner.run(engine);
Matter.Render.run(render);
svg {display: none;}
<script src="https://cdn.jsdelivr.net/npm/pathseg@1.2.0/pathseg.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.17.1/matter.js"></script>
<svg>
  <!-- SVG path from https://upload.wikimedia.org/wikipedia/commons/e/e9/Semicircle.svg -->
  <path d="M 98,93 L 169,93 C 169,54 137,22 98,22 C 59,22 27,54 27,93 L 98,93 z " />
</svg>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?