回答編集履歴

1

試行を追記

2020/05/07 14:09

投稿

thkana
thkana

スコア7659

test CHANGED
@@ -9,3 +9,85 @@
9
9
 
10
10
 
11
11
  回避不可能な事態ではないのだから、とりあえず対応しておいて現象はコミュニティに報告しておく、というのがオープンソース的に適切な対応だと思います。
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
19
+ 真面目に座標変換とかしないで直感でなんとかならないかと別の方法でやってみましたが、
20
+
21
+ fillの描画色を使わないとか、noStroke()前提とか、制限が一杯でてしまいました。
22
+
23
+ ```Processing
24
+
25
+ void setup(){
26
+
27
+ size(400,400);
28
+
29
+ }
30
+
31
+ void arc2(float x, float y, float radx, float rady, float start, float end){
32
+
33
+ PGraphics pg=createGraphics(width,height);
34
+
35
+ PGraphics mask=createGraphics(width,height);
36
+
37
+ float rad=radx>rady?radx:rady; //radxとradyの大きい方
38
+
39
+ pg.beginDraw();
40
+
41
+ pg.background(255,255,0);//これが描画色になる
42
+
43
+ pg.endDraw();
44
+
45
+ mask.beginDraw();
46
+
47
+ mask.background(0);
48
+
49
+ mask.noStroke();
50
+
51
+ mask.fill(255);
52
+
53
+ mask.ellipse(x,y,radx,rady);
54
+
55
+ mask.fill(0);
56
+
57
+ mask.arc(x,y,rad,rad,end,start+2*PI);//円のarcは期待の角度。開始/終了角の扱いかなりいい加減
58
+
59
+ mask.endDraw();
60
+
61
+ pg.mask(mask);
62
+
63
+ image(pg, 0,0);
64
+
65
+ }
66
+
67
+
68
+
69
+ void draw(){
70
+
71
+ background(204);
72
+
73
+ arc2(width/2,height/2,150,100,radians(-30),radians(30));
74
+
75
+
76
+
77
+ //参照用斜め線
78
+
79
+ translate(width/2,height/2);
80
+
81
+ rotate(radians(30));
82
+
83
+ stroke(0);
84
+
85
+ line(0,0,200,0);
86
+
87
+ rotate(radians(-60));
88
+
89
+ line(0,0,200,0);
90
+
91
+ }
92
+
93
+ ```