最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript趣题:点、线、面

来源:懂视网 责编:小采 时间:2020-11-27 20:25:13
文档

JavaScript趣题:点、线、面

JavaScript趣题:点、线、面:题目描述很简单,给定一些点的坐标,返回true如果它们在同一条直线上。比方说[7, 4],这代表一个点。onLine([[1,2], [7, 4], [22, 9]]); // returns true onLine([[1,2], [-3, -14], [22, 9]]); // returns false看到这个
推荐度:
导读JavaScript趣题:点、线、面:题目描述很简单,给定一些点的坐标,返回true如果它们在同一条直线上。比方说[7, 4],这代表一个点。onLine([[1,2], [7, 4], [22, 9]]); // returns true onLine([[1,2], [-3, -14], [22, 9]]); // returns false看到这个

题目描述很简单,给定一些点的坐标,返回true如果它们在同一条直线上。

比方说[7, 4],这代表一个点。

onLine([[1,2], [7, 4], [22, 9]]); // returns true
onLine([[1,2], [-3, -14], [22, 9]]); // returns false

看到这个题目,我首先在脑海中浮现出一个平面,紧接着出现了一个直角坐标系。

我在坐标系上按照中学数学老师以前教给我的方法,把这些点一个个地描在坐标系上。

然后把点与点间,用一条条线段连接在一起。

那么,怎么判断它们在同一条直线上?

我很快想到了斜率。

若直线上任意两点为(x1,y1)、(x2,y2)则直线斜率k=(y2-y1)/(x2-x1)。

如果这些线段的斜率都是一样的,那么它们肯定在同一条直线上!

在程序中,我只要判断线段间的斜率,不一样就返回false。

根据上面的思路写出代码:

function onLine(points) {
 var slope;
 for(var i=0;i<points.length-1;i++){
 var p1 = points[i];
 var p2 = points[i+1];
 var currentSlope = (p2[1] - p1[1]) / (p2[0] - p1[0]);
 if(slope){
 if(slope !== currentSlope){
 return false;
 }
 }
 else{
 slope = currentSlope;
 }
 }
 return true;
}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

JavaScript趣题:点、线、面

JavaScript趣题:点、线、面:题目描述很简单,给定一些点的坐标,返回true如果它们在同一条直线上。比方说[7, 4],这代表一个点。onLine([[1,2], [7, 4], [22, 9]]); // returns true onLine([[1,2], [-3, -14], [22, 9]]); // returns false看到这个
推荐度:
标签: js javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top