1. 程式人生 > >如何繪製一條連線兩個點的曲線

如何繪製一條連線兩個點的曲線

原理即將一條曲線分割成多個線段,以顯示成曲線的樣子。

void drawCurves(CCPoint p0, CCPoint p1, void (*drawFunc)(CCPoint, CCPoint))
{
#define kSegmentWidth 8
	int segment = floorf((p1.x - p0.x) / kSegmentWidth);
	//兩點y座標的中間點
	float yMid = (p1.y + p0.y) / 2;
	//兩點在y軸上的距離的一半
	float ampl = (p1.y - p0.y) / 2;
	CCPoint pt0, pt1;
	float dx = (p1.x - p0.x)/segment;

	pt0 = p0;
	//曲線的點的運算皆需要以(p0.x, yMid)為參照
	for(int i = 0; i < segment + 1; i++)
	{
		pt1.x = p0.x + i * dx;
		pt1.y = yMid + ampl * cosf(M_PI * i /segment); 
		drawFunc(pt0, pt1);
		pt0 = pt1;
	}
}


相關推薦

如何繪製連線曲線

原理即將一條曲線分割成多個線段,以顯示成曲線的樣子。 void drawCurves(CCPoint p0, CCPoint p1, void (*drawFunc)(CCPoint, CCPoint)) { #define kSegmentWidth 8 int s

如何新增infowindow距離和時間像谷歌地圖的折線連線?

我工作在離子離子谷歌地圖應用程式和使用谷歌提供的本機和方向服務我甲型肝炎多個途徑,使用以下程式碼: calculateAndDisplayRoute() {var points = [];this.directionsService.route({origin: this.start,destination

程式,將字串連線起來,不要用strcat函式.

#include <stdio.h> #include <windows.h> /* 不用 strcat 將兩個字串連線起來 */ //寫一個這樣的函式 void Strcat(char* current, const char* extra) { //wh

用C語言繪製標準的餘弦曲線

#include<stdio.h> #include<math.h> int main() { double y; int x,m; for(y=1;y>=-1;y-=0.1) { m=acos(y)*10; for(x=1;x&

面試題61:斜率最大的那線通過的

題目: 平面上有N個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點,斜率不存在的情況不考慮。 思路: 可以先將N個點按x進行排序。 斜率k最大值為max(斜率(point[i],point[i+1])) 0<=i<n-2。 時間複雜度:O(nl

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

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

Java多線程,啟動四線程,運行加,另外運行減

track div -a sdn type data ipp 四個線程 運行 Java多線程,啟動四個線程,兩個運行加一,另外兩個運行減一

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

獲取經緯度之間的距離

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

update連線

1、update 連線兩個表 UPDATE ask_way a SET way_addr = ( SELECT q.ans_txt FROM pos_ques q WHERE a.hos_id = q.hos_id AND a.w

mybatis連線資料來源

1.db.properties配置檔案設定 driver:com.mysql.jdbc.Driverf_url:jdbc:mysql://**:3306/**?useUnicode=true&amp;characterEncoding=UTF-8&am

知道的經緯度計算的距離

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

列舉法找出距離最近的

在程式設計之美和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

如何在電腦上連線 Bose 藍芽音箱

轉自 https://www.bose.cn/zh_cn/support/article/pairing-multiple-speakers-together.html 立體聲和派對模式 適用於:  SoundLink Revolve

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

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

mysql update語句set中用and條件連線操作

原來的資料如下 執行的SQL語句如下 update sys_area set create_by = '2' and update_by = '2' where id = '1'; 執行結果為 原因 正常情況update的set中應該用逗號(,)連線,但是上面用了邏

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

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