Javascript 如何仅绘制弧的这一部分?
请看这张照片: 我知道p1、p2和中心,它们是二维点。 我还知道角p1-中心p2和半径r 如何使用画布的“函数arc()”仅绘制圆弧的填充部分 编辑 我真正需要做的是,给定2个点和一个角度,在这2个点之间画一条曲线,这样p1-中心-p2角度就是给定的角度 我要做的是计算圆心和半径,其中有两个点,现在我需要画一条连接p1和p2的线,并且有给定的角度。 这是我用来计算圆环中心的函数(该函数工作正常) 该函数有助于计算圆中各点的角度Javascript 如何仅绘制弧的这一部分?,javascript,html,canvas,geometry,geometric-arc,Javascript,Html,Canvas,Geometry,Geometric Arc,请看这张照片: 我知道p1、p2和中心,它们是二维点。 我还知道角p1-中心p2和半径r 如何使用画布的“函数arc()”仅绘制圆弧的填充部分 编辑 我真正需要做的是,给定2个点和一个角度,在这2个点之间画一条曲线,这样p1-中心-p2角度就是给定的角度 我要做的是计算圆心和半径,其中有两个点,现在我需要画一条连接p1和p2的线,并且有给定的角度。 这是我用来计算圆环中心的函数(该函数工作正常) 该函数有助于计算圆中各点的角度 function drawArcPart(cx, cy, radi
function drawArcPart(cx, cy, radius, p1x, p1y, angle) {
var x = p1x - cx;
var y = p1y - cy;
var startAngle = Math.atan2(y,x);
var endAngle = startAngle - angle;
var ctx = document.getElementById('canvas').getContext('2d');
ctx.fillStyle='black';
ctx.beginPath();
ctx.arc(cx, cy, radius, startAngle, endAngle, true);
ctx.fill();
}
我已将此JavaScript上载到,并带有一个扩展,该扩展还绘制了要点和两个示例。试试这个
<html>
<head></head>
<body onload="drawShape();">
<div>
<canvas id="tutorial" width="150" height="200"></canvas>
</div>
<SCRIPT type="text/javascript">
function drawShape(){
// get the canvas element using the DOM
var canvas = document.getElementById('tutorial');
// Make sure we don't execute when canvas isn't supported
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
var x = 100; // x coordinate
var y = 100; // y coordinate
var radius = 100; // Arc radius
var startAngle = (Math.PI)-((Math.PI)/4); // Starting point on circle
var endAngle = (Math.PI)+((Math.PI)/4); // End point on circle
ctx.arc(x,y,radius,startAngle,endAngle, false);
ctx.fill();
} else {
alert('You need Safari or Firefox 1.5+ to see this demo.');
}
}
</SCRIPT>
</body>
</html>
函数drawShape(){
//使用DOM获取画布元素
var canvas=document.getElementById('tutorial');
//确保在画布不受支持时不执行
if(canvas.getContext){
var ctx=canvas.getContext('2d');
ctx.beginPath();
var x=100;//x坐标
变量y=100;//y坐标
var radius=100;//弧半径
var startAngle=(Math.PI)-(Math.PI)/4);//圆上的起点
var endAngle=(Math.PI)+(Math.PI)/4;//圆上的端点
弧(x,y,半径,星形,端角,假);
ctx.fill();
}否则{
警报('您需要Safari或Firefox 1.5+才能看到此演示');
}
}
这是一个修改后的示例
结果是
这就是你想要的吗?但是我画了一些我不想删除的东西。我真正需要的是:moveTo(p1)arcTo(p2,radius)当p1的x分量与p2不同时,这似乎不起作用:当然:p1=(100100)p2=(100300)center=(200200)radius=100*sqrt(2)另一个:p1=(100100)p2=(150300)中心=(225175)半径=145.77我可以为你提供一个函数,计算中心和半径,给定2个点和一个角度(这是我正在使用的)。顺便说一句,我编辑了主要帖子,以充分解释我试图实现的目标。
<html>
<head></head>
<body onload="drawShape();">
<div>
<canvas id="tutorial" width="150" height="200"></canvas>
</div>
<SCRIPT type="text/javascript">
function drawShape(){
// get the canvas element using the DOM
var canvas = document.getElementById('tutorial');
// Make sure we don't execute when canvas isn't supported
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
var x = 100; // x coordinate
var y = 100; // y coordinate
var radius = 100; // Arc radius
var startAngle = (Math.PI)-((Math.PI)/4); // Starting point on circle
var endAngle = (Math.PI)+((Math.PI)/4); // End point on circle
ctx.arc(x,y,radius,startAngle,endAngle, false);
ctx.fill();
} else {
alert('You need Safari or Firefox 1.5+ to see this demo.');
}
}
</SCRIPT>
</body>
</html>