1. 程式人生 > >判斷平面內一個點 是否在兩個點所確定的長軸橢圓內

判斷平面內一個點 是否在兩個點所確定的長軸橢圓內

    # 點到兩個端點所確定的直線的距離 classic formula is:
    # # d = [(x2-x1)*(y1-y)-(x1-x)*(y2-y1)] / sqrt((x2-x1)**2 + (y2-y1)**2)
    #
    xD = (x2 - x1)
    yD = (y2 - y1)
    detaX = x1 - X
    detaY = y1 - Y
    norm2 = sqrt(xD ** 2 + yD ** 2)  # 注意norm2是一個數而不是numpy陣列,因為xD, yD都是一個數。單個數字運算math比numpy快
    b = thre
    dist = xD * detaY - detaX * yD  # 常數與numpy陣列(X,Y是座標陣列)的運算,broadcast
    dist /= norm2
    dist = np.abs(dist)
    ratiox = np.abs(detaX / (xD + 1e-8))
    ratioy = np.abs(detaY / (yD + 1e-8))
    ratio = np.where(ratiox < ratioy, ratiox, ratioy)
    ratio = np.where(ratio > 1, 1, ratio)  # 不用 np.ones_like(ratio)也可以正常執行,並且會快一點點
    ratio = np.where(ratio > 0.5, 1 - ratio, ratio)
    oncurve_dist = b * np.sqrt(1 - np.square(ratio * 2))  # oncurve_dist計算的是橢圓邊界上的點到長軸的垂直距離

    sigma = thre  # todo: sigma of PAF 對於PAF的分佈,設其標準差為多少最合適呢

    guass_dist[dist >= b] = 0

    return guass_dist

相關推薦

判斷平面一個 是否在確定橢圓

# 點到兩個端點所確定的直線的距離 classic formula is: # # d = [(x2-x1)*(y1-y)-(x1-x)*(y2-y1)] / sqrt((x2-x1

一個到另外所在直線的投影

//獲取一個點到另外兩個點所在直線的投影。 如果點在直線上,返回其本身 //下面公式適用於二維空間的點, Y軸的數值不考慮public static Vector3 GetProjectToLine(Vector3 _Point, Vector3 L0Point, Vect

平面距離最近的-- 分治法

題目地址 hdu 1007 題目描述 Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings are p

ThreeJS作為起始座標畫一個立方體

drawLineBox(new THREE.Vector3(100, 50, 0), new THREE.Vector3(200, 100, 100)); function drawLineBox(start, end) {   //開始點用cube標出來方便觀察 geometry =

JS判斷輸入字串長度(漢字算字元,字母數字算一個

<html> <head> <title>js判斷輸入字串長度(漢字算兩個字元,字母數字算一個)</title> <style type="text/css"> .pbt { margin-b

路徑中一個的區別

在匯入js或者樣式表的時候,如果我們放在資料夾下面,有時會涉及路徑問題找不到我們的引入,曾經我也遇到過相應的問題。解決方法就是在路徑前面加點。那麼在這個路徑中一個點和兩個點到底有什麼區別呢? 1、一個點:表示當前目錄。即類似使用:./juqery.min.js。 2、兩個點:

IP工具類:判斷ip是否在同一個網段,比較ip的大小

import java.util.regex.Pattern; /** * IP地址範圍: 0.0.0.0~255.255.255.255,包括了mask地址。 IP地址劃分: * A類地址:1.0.0.1~126.255.255.254 B類地址:128.0.0.1~

給你一個 n ,m 條邊的無向圖,求至少要在這個的基礎上加多少條無向邊使得任意可達~

給你一個 n 個點,m 條邊的無向圖,求至少要在這個的基礎上加多少條無向邊使得任意兩個點可達~  輸入描述: 第一行兩個正整數 n 和 m 。 接下來的m行中,每行兩個正整數 i 、 j ,表示點i與點j之間有一條無向道路。 輸出描述: 輸出一個整數,表示答案 示例1 輸入 4 2 1 2 3

HDU 4587 TWO NODES(割的最大連通分支數)

target int 兩個 bsp printf pan sta ans acm http://acm.hdu.edu.cn/showproblem.php?pid=4587 題意: 給一圖,求割去兩個點後所能形成的最大連通分支數。 思路: 對於這種情況,第一

最小割經典題(依附在一起的情況)poj3469

minimum 兩個 color computer upd 情況 nim %d struct Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 25099

unity中把一個圖片切割成UI圖片

unity3 mode png 鼠標 eight 圖片效果 height pri unity 1、在unity3D的Project視圖下選中需要更改的圖片,將圖片的Texture Type更改為Sprite (2D and UI),點擊Apply即可。操作如圖所示:

獲取經緯度之間的距離

開發 req AS 坐標 earth param col return art /** * js獲取兩個經緯度之間的距離 * @param lat1 第一點的緯度 * @param lng1 第一點的經度 * @param lat2 第二點的緯度 * @para

Spring用@Autowire向一個類註入一個接口的實現類

err xtend chang autowired 實現類 autowire bbs control 實現 @Servicepublic class AaaService implements IChangePassword { @Override publi

知道的經緯度計算的距離

經緯度首先轉化為弧度 然後使用公式即可 1 private static double EARTH_RADIUS=6378.137; 2 private static double rad(double d) { 3 return d*Mat

Unity中使用C#遞迴輸出陣列1,2,3,5,8,...該陣列的生成規律是每一個數字是前數字的和

一、實現思路:第一個數大於等於0,第二個數大於等於第一個數,最後指定一個需要輸出的最後一個數字(該數字用作最後輸出的界限) ①實現指令碼如下: /*** * Title:"XXX" 專案 * 主題:XXX * Description: * 功能:XXX * Date:2018 * Ver

列舉法找出距離最近的

在程式設計之美和HDU有這麼一道題目: 給定平面上N個點的座標,找出距離最近的兩個點。如:有這些個點對: (-1, 3) (-1, -1) (1, 1) (2, 0.5) (2, -1) (3, 3) (4, 2) (4, -0.5) 則最近的兩點應該為:(

計算的經緯度的距離

package com.yuncai.core.common.utils; import java.util.HashMap; import java.util.Map; /** * 計算兩個座標的距離 * @author audaque * */ public class Dist

輸入證書,打印出這整數制定的範圍的所有整數

#include <iostream> using namespace std ; int main() {          int num = 0 ,i = 0;     cin >>

HDU 1874 Dijkstra演算法 求任意之間的最短距離

題意:          某省自從實行了很多年的暢通工程計劃後,終於修建了很多路。不過路多了也不好,每次要從一個城鎮到另一個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。 #include&l

java--Fibonacc由數字1、1、2、3...組成的,從第三數字起每一個數字為前兩個數字的和。建立一個方法,接受一個整數引數,顯示從第一元素開始總共由該引數指定的個數構成的所有斐波那契數

題目完整描述:一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fib