檢測一個點, 是否在一個半圓之內的方法

demo: http://jsbin.com/lihiwigaso

?

需求: 一個圓分成分部分, 鼠標滑上不同的區域顯示不同的顏色

思路: 先判斷這個點是否在圓之內, 再判斷是否在所在的三角形之內就可以了

所需要的全部源碼:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>point-in-semicircle</title><script src="jquery-1.7.2.min.js"></script>
<style>
body{border:0;margin:0;padding:0;
}
#bottom {position: absolute;left:0px;top:0px;width: 200px;height: 200px;border: 1px solid red;
}#circleProcess {position: relative;top: 0;left: 0;width: 200px;height: 200px;stroke-dasharray: 360%;stroke-dashoffset: 0%;stroke: #6FEC6F;fill: none;-webkit-transform: rotate(-90deg);-moz-transform: rotate(-90deg);-ms-transform: rotate(-90deg);-o-transform: rotate(-90deg);transform: rotate(-90deg);
}#left {position: absolute;top: 0px;left: 0px;height: 100px;width: 200px;border-radius: 100px 100px 0 0;-moz-border-radius: 100px 100px 0 0;-webkit-border-radius: 100px 100px 0 0;background:red;transform: rotate(-45deg);-moz-transform: rotate(-45deg);-webkit-transform: rotate(-45deg);transform-origin: 100px 100px;-moz-transform-origin: 100px 100px;-webkit-transform-origin: 100px 100px;display:none;}#right {position: absolute;top: 100px;left: 0px;height: 100px;width: 200px;border-radius: 0 0 100px 100px;-moz-border-radius: 0 0 100px 100px;-webkit-border-radius: 0 0 100px 100px;background:blue;transform: rotate(-45deg);-moz-transform: rotate(-45deg);-webkit-transform: rotate(-45deg);transform-origin: 100px 0px;-moz-transform-origin: 100px 0px;-webkit-transform-origin: 100px 0px;display:none;
}#top {position: absolute;left: 0px;top: 0px;width: 200px;height: 200px;z-index: 100px;
}</style>
</head>
<body>
<div id="bottom">
<svg id="circleProcess" xmlns="http://www.w3.org/2000/svg">
<circle id="circle" cx="100" cy="100" r="100" stroke-width="5" stroke-dashoffset="0%"></circle>
</svg>
<div id="left"></div>
<div id="right"></div>
</div>
<div id="top"></div>
</body>
</html>
<script>
jQuery(function($){var polygons = [[[0, 0], [200, 0], [100, 100], [0, 200]],[[100, 100], [200, 0], [200, 200], [0, 200]]];var $left = $('#left');var $right = $('#right');var $top = $('#top');var oldIndex = -1;$top.on('mousemove', function(e){if( pointInsideCircle([e.offsetX, e.offsetY],[100, 100], 100) ){var index = inside([e.offsetX, e.offsetY], polygons);if(index===oldIndex){return;}if (index === 0) {$left.show();$right.hide();}if (index === 1) {$left.hide();$right.show();}oldIndex = index;} else {$left.hide();$right.hide();oldIndex = -1;}});$top.on('mouseleave', function(){$left.hide();$right.hide();oldIndex = -1;});function inside(point, polygons){for(var i=1; i>=0; i--){if(pointInsidePolygon(point, polygons[i])){return i;}}return -1;}function pointInsidePolygon(point, vs) {// ray-casting algorithm based on// http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.htmlvar x = point[0], y = point[1];var inside = false;for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {var xi = vs[i][0], yi = vs[i][1];var xj = vs[j][0], yj = vs[j][1];var intersect = ((yi > y) != (yj > y))&& (x < (xj - xi) * (y - yi) / (yj - yi) + xi);if (intersect) inside = !inside;}return inside;}function pointInsideCircle(point, circle, r) {if (r===0) return falsevar dx = circle[0] - point[0]var dy = circle[1] - point[1]return dx * dx + dy * dy <= r * r}});
</script>

  

轉載于:https://www.cnblogs.com/zlog/p/6109223.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371953.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡設備接地規范,網絡機房防雷接地的四種方式及靜電要求

編輯----河南新時代防雷由于計算機網絡系統的核心設備都放置在網絡機房內&#xff0c;因而網絡機房防雷接地有了較高的環境要求&#xff0c;良好的接地系統是保證機房計算機及網絡設備安全運行&#xff0c;以及工作人員人身安全的重要措施。直流地的接法通常采用網格地&#xf…

抓住尾部的StackOverFlowError

使用Java程序時可能要處理的一種更煩人的情況是StackOverFlowError&#xff0c;如果您有一個很好的可生產的測試用例&#xff0c;那么關于使用堆棧大小或設置條件斷點/某種痕跡 。 但是&#xff0c;如果您有一個測試案例可能一次失敗100次&#xff0c;或者像我的案例一樣在AWTM…

Gunicorn配置部分的翻譯

寫在前面&#xff0c;雖然翻譯得很爛&#xff0c;但也是我的勞動成果&#xff0c;轉載請注明出處&#xff0c;謝謝。 Gunicorn版本號19.7.1 Gunicorn配置 概述 三種配置方式 優先級如下&#xff0c;越后的優先級越大 1.框架的設置&#xff08;現在只有paster在用這個&#xff0…

臺式計算機風扇聲音大怎么處理,如何解決電腦電源風扇聲音大的問題?

現在的臺式機一般用3到5年后&#xff0c;一些問題自然也就慢慢表現出來了。很多網友在使用電腦過程中都有電腦風扇聲音大怎么辦的問題&#xff0c;電腦風扇聲音大就會讓人覺得使用電腦很不舒服&#xff0c;怎么辦好呢&#xff1f;出現重要的問題要如何解決好呢&#xff1f;現在…

jsp分頁功能

http://blog.csdn.net/xiazdong/article/details/6857515轉載于:https://www.cnblogs.com/Baronboy/p/6112403.html

Spring Security第1部分–具有數據庫的簡單登錄應用程序

什么是Spring Security&#xff1f; Spring Security是一個提供安全解決方案的框架&#xff0c;可在Web請求級別和方法級別上處理身份驗證和授權。 Spring安全性通過兩種方式處理安全性。 一種是安全的Web請求&#xff0c;另一種是在URL級別限制訪問。 Spring Security使用Serv…

計算機應用 winxp,2017年職稱計算機考試模塊WindowsXP試題

2017年職稱計算機考試模塊WindowsXP試題全國專業技術人員計算機應用能力考試是專業技術人員資格考試的一種。接下來應屆畢業生小編為大家搜索整理了2017年職稱計算機考試模塊WindowsXP試題&#xff0c;希望大家有所幫助。1. Windows XP中刪除某個文件的快捷方式【 A 】。A. 對原…

Python基礎(8)_迭代器、生成器、列表解析

一、迭代器 1、什么是迭代 1 重復   2 下次重復一定是基于上一次的結果而來 1 l[1,2,3,4] 2 count0 3 while count < len(l): 4 print(l[count]) 5 count1 迭代舉例2、可迭代對象 可進行.__iter__()操作的為可迭代對象 #print(isinstance(str1,Iterable)),判斷str…

Angularjs2-EXCEPTION: Response with status: 200 Ok for URL:

利用jsonp跨域請求數居&#xff0c;報錯 core.umd.js:3070 EXCEPTION: Response with status: 200 Ok for URL: 參考&#xff1a;stackoverflow 未解決。。。腦仁疼。。。有小伙伴也碰到過這個問題么&#xff1f; 16/11/30 問題解決 1.服務器端API允許跨域訪問(返回的數據添加允…

圖片無法刪除要計算機管理員,存在桌面的圖片刪不掉,怎么處理?提示是需要管理員權限。...

將下面代碼復制到記事本里&#xff0c;重命名為1.bat&#xff0c;然后打開&#xff0c;這時你右鍵圖片會出現管理員取得所有權&#xff0c;然后取得所有權后再刪除試試Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\runas]管理員取得所有權NoWorkingDirecto…

Java對象序列化的本機C / C ++類似性能

您是否曾經希望過像使用C 這樣的本地語言將Java對象轉換成字節流一樣快的速度&#xff1f; 如果您使用標準的Java序列化&#xff0c;您可能會對性能感到失望。 Java序列化的目的是與盡可能快而緊湊地序列化對象的目的截然不同。 為什么我們需要快速緊湊的序列化&#xff1f; 我…

WebStrom Sass 編譯配置 windows

第一步&#xff1a; 先安裝Ruby下載 一路next 安裝完成后打開開始菜單 打開后輸入 gem install sass sass -v 出現版本號說明成功 第二部配置webstorm 在webstorm中settings中搜索file watchers工具&#xff0c;在此工具中添加一個scss的watcher 確定&#xff0c;打開一個scss…

非本地跳轉之setjmp與longjmp

非本地跳轉(unlocal jump)是與本地跳轉相對應的一個概念。 本地跳轉主要指的是類似于goto語句的一系列應用&#xff0c;當設置了標志之后&#xff0c;可以跳到所在函數內部的標號上。然而&#xff0c;本地跳轉不能將控制權轉移到所在程序的任意地點&#xff0c;不能跨越函數&am…

清華計算機自主招生試題,2017年清華大學自主招生筆試題

2017年清華大學自主招生筆試題2017高考結束后&#xff0c;全國各大高校自主招生面試開始了&#xff0c;以下是百分網小編搜索整理的關于2017年清華大學自主招生筆試題&#xff0c;供各位參考&#xff0c;希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!…

擴展劑:模式還是反模式?

擴展器模式在最近幾年變得很流行&#xff0c;甚至已經在OSGi標準&#xff08;例如&#xff0c;藍圖服務和Web應用程序規范&#xff09;中使用。 在處女座&#xff0c;我們從一開始就與擴展程序一起工作&#xff0c;但是盡管它們具有優勢&#xff0c;但它們仍有一些明顯的缺點。…

python html格式編碼

web應用如用到ace等網絡編輯器的時候&#xff0c;如要支持html,xml等格式的文件編輯&#xff0c;輸入ace 的文本內容必須先進行html格式編碼&#xff1a; def html_escape(content): import cgi return cgi.escape(content)轉載于:https://www.cnblogs.com/zhouxiaoming/p/703…

字符串替換

題目: 給定一個英文的字符串, 要求你將其中的元音刪除掉, 返回新的字符串. 例如:"This website is for losers LOL!" --> "Ths wbst s fr lsrs LL!" 當看到這個題目的時候, 第一個想起的就是re模塊的正則表達式. 不過由于最近使用過字符串的replace方…

小學計算機技術指導綱要,《中小學信息技術課程指導綱要(試行)》

《中小學信息技術課程指導綱要(試行)》2000年11月教育部頒發的《中小學信息技術課程指導綱要(試行)》教學目標&#xff1a;1、 增強信息意識&#xff0c;了解信息技術的發展變化及其對工作和社會的影響。2、 初步了解計算機基本工作原理&#xff0c;學會使用與學習和實際生活直…

JavaFX 2.0布局窗格– FlowPane和TilePane

FlowPanes和TilePanes是不錯的布局窗格&#xff0c;如果您想一個接一個地連續地水平或垂直地布局子級&#xff0c;則可以。 它們彼此非常相似&#xff0c;因為它們都將子級布置成列&#xff08;在水平Flow / TilePane的情況下&#xff09;并按其寬度或行&#xff08;在垂直Flow…

EasyRMS錄播管理服務器項目實戰:windows上開機自啟動NodeJS服務

本文轉自EasyDarwin開源團隊成員Penggy的博客&#xff1a;http://www.jianshu.com/p/ef840505ae06 近期在EasyDarwin開源團隊開發一款基于EasyDarwin在錄播服務器EasyRMS過程中,我采用node作為EasyRMS錄播服務器錄播管理服務器的開發平臺,基于node開發關于設備管理,錄像計劃,錄…