Canvas:继续lineTo路径,但x已固定
Canvas: Continue lineTo path but with x fixed
http://jsfiddle.net/5xcbbqtL/5/
我正在用x,y点画两条线。然后我从第二行的开始和结束处取弧度。
当我尝试使用弧度来推断第二条线,使其更长时,我无法创建一条直线,因为我想移动到固定的x位置
其中
var radian=Math.atan2(endY-startY,endX-startX);
var y=endY+100*Math.sin(radian);
pen.lineTo(200,y); // < problem
移动到一个固定的位置就像添加了一个倾斜效果。我如何正确地进行线路,但在'x'200 处停止
您可以使用斜率截距公式将您的线扩展到所需的X:
function extendToX(desiredX,x0,y0,x1,y1){
var m=(y0-y1)/(x0-x1);
var b=y1-(m*x1);
return(m*desiredX+b);
}
示例代码和演示:http://jsfiddle.net/m1erickson/c2ba9d9y/
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
body{ background-color: ivory; }
canvas{border:1px solid red;}
</style>
<script>
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var x0=25;
var y0=50;
var x1=150;
var y1=150;
ctx.beginPath();
ctx.moveTo(x0,y0);
ctx.lineTo(x1,y1);
ctx.strokeStyle='blue';
ctx.stroke();
var newY=extendToX(200,x0,y0,x1,y1);
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(200,newY);
ctx.strokeStyle='red';
ctx.stroke();
function extendToX(desiredX,x0,y0,x1,y1){
var m=(y0-y1)/(x0-x1);
var b=y1-(m*x1);
return(m*desiredX+b);
}
}); // end $(function(){});
</script>
</head>
<body>
<h4>Use slope-intercept formula to extend line</h4>
<canvas id="canvas" width=300 height=300></canvas>
</body>
</html>
相关文章:
- 为什么继续;语句冻结浏览器
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 继续使用javascript中的setTimeout
- 当一些承诺失败时,如何继续使用$q.all()
- Tab键不会't继续chrome/IE11中的表单字段
- 如何让JS脚本在导航后继续运行(谷歌chrome控制台)
- 定时Ajax进程在用户离开页面后继续
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 如何在刷新页面后继续选取框
- "改变“;列表头,然后继续处理列表
- 如何停止字幕文本一段时间,然后继续
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 如何隐藏滚动条,但希望它继续工作
- 继续检查,直到为True
- 我如何才能继续'如果'语句来比较作为参数的多个函数返回值
- 等待函数执行后再继续
- 如何让foreach循环等待$http.get完成后再继续
- 按下后退按钮时,谷歌音乐如何继续播放
- 如何进行自动倒计时,点击javascript继续倒计时
- Canvas:继续lineTo路径,但x已固定