2
我開始爲tizen wearable 2.3.1
編寫應用程序。我想在弧上增加動態增長的輻射(直到它變成一個圓)。我的圈子使用cairo2d
創建。Dynamiclly在一個圓上漸變漸變
我一直在關注三次貝塞爾曲線的近似值this article。我取得了一些進展。我有一個圓圈前半部分的動態漸變 - 但漸變不是從我的X1,Y1
開始的,但它似乎從中心增長。
第一步是移動開羅中心和旋轉(因此該中心是在圓的中心和X,Y
是適當的軸線),那麼我算基於所述百分比的角度並初始化變量:
double current_angle= (2 * M_PI * percent)/100;
double R = 74;
double K = 0.5522847498; // - magic number from article
// start and end point
double X1 = 0;
double Y1 = R;
double X4 = R * sin(current_angle);
double Y4 = R * cos(current_angle);
// bezier points
double X2 = X1 + K * R * sin(current_angle);
double Y2 = Y1 - K * R * cos(current_angle);
double X3 = X4 + K * R * sin(current_angle);
double Y3 = Y4 + K * R * cos(current_angle);
那麼,在年底,創建我的模式,我的畫弧:
Evas_Coord_Point P1 = {X1, Y1};
Evas_Coord_Point P2 = {X2, Y2};
Evas_Coord_Point P3 = {X3, Y3};
Evas_Coord_Point P4 = {X4, Y4};
cairo_pattern_t *dynamic_pattern = cairo_pattern_create_mesh();
cairo_mesh_pattern_begin_patch (dynamic_pattern);
cairo_mesh_pattern_move_to (dynamic_pattern, P1.x, P1.y);
cairo_mesh_pattern_curve_to (dynamic_pattern, P2.x, P2.y, P3.x, P3.y, P4.x, P4.y);
cairo_mesh_pattern_set_corner_color_rgb (dynamic_pattern, 1, 1, 1, 1);
cairo_mesh_pattern_set_corner_color_rgb (dynamic_pattern, 0, 0, 1, 0);
cairo_mesh_pattern_end_patch (dynamic_pattern);
cairo_set_source(cairo, dynamic_pattern);
cairo_arc(cairo, 0, 0, cairo_circle_radius, 0, current_angle);
cairo_stroke(cairo);
,並在最初的幾個百分比值,我沒有得到任何東西,但隨後在12%左右,它開始借鑑和擴展兩個方向。我究竟做錯了什麼?
這張圖片顯示了我想要達到的目標(抱歉,對於我不是很專業的圖片,但這是我能做的最好的)。
編輯:我做了一些測試,它開始對角工作> = 45
什麼是紅色,黃色,藍色標記? –
綠色和紅色應該是開始和結束點,黃色漸變,但我讓他們太大了。基本上,我正在尋找錐形漸變。 –