วงกลมสองสีที่ทับซ้อนกัน


22

เขียนโปรแกรมหรือฟังก์ชั่นที่รับอินพุตต่อไปนี้ในรูปแบบที่เหมาะสมตามที่คุณต้องการ:

  • จำนวนเต็มบวกสองจำนวน W และ H ที่กำหนดความกว้างและความสูงของภาพที่คุณกำลังสร้าง

  • สองสี RGB C1 และ C2 ที่จะใช้ในการสีภาพ

  • รายการ 3-tuples ของรูปแบบ(r, x, y)ที่กำหนดวงกลมด้วยรัศมีrและกึ่งกลางx, yในระนาบของภาพ rเป็นจำนวนเต็มบวกและxและyเป็นจำนวนเต็มใด ๆ พิกเซลด้านซ้ายบนของภาพคือ0, 0และแกน x เพิ่มขึ้นไปทางขวาและแกน y เพิ่มขึ้นลง

เอาท์พุทภาพที่มีขนาด W คูณ H ที่ทำสีด้วย C1 และ C2 ซึ่งไม่มีบริเวณใกล้เคียงสองแห่งที่กำหนดโดยวงกลมที่ทับซ้อนกันทั้งหมดเป็นสีเดียวกัน

ตัวอย่างเช่น:ถ้าอินพุตคือ

W = 300
H = 200
C1 = (255, 200, 0)
C2 = (128, 0, 255)
Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)

จากนั้นขอบเขตวงกลมจะเป็นดังนี้:

ตัวอย่างที่ 1 ขอบเขตของวงกลม

ภาพที่สร้างโดยแวดวงมีหกภูมิภาคที่แตกต่างและต่อเนื่องกัน แต่ละภูมิภาคจะต้องทำสีด้วย C1 (สีเหลือง) หรือ C2 (สีม่วง) ซึ่งไม่มีบริเวณใกล้เคียงสองแห่งที่มีสีเดียวกัน

มีสองวิธีในการทำสิ่งนี้ความแตกต่างเพียงอย่างเดียวคือการเปลี่ยนสี:

ตัวอย่างที่ 1 เอาท์พุท 1 ตัวอย่างที่ 1 เอาท์พุท 2

ดังนั้นทั้งสองภาพจะเป็นผลลัพธ์ที่ถูกต้องสำหรับตัวอย่างอินพุต

สิ่งนี้จะเป็นผลลัพธ์ที่ไม่ถูกต้องเนื่องจากมีพื้นที่สีเหลืองสองแห่งซึ่งอยู่ติดกัน

รูปภาพที่ส่งออกของคุณควรเป็นไปตามหลักเกณฑ์เหล่านี้:

  • นอกจาก C1 และ C2 แล้วสีที่สามที่เป็นกลางเช่นสีดำหรือสีขาวอาจถูกใช้สำหรับขอบเขตวงกลมตราบใดที่มีความหนาไม่เกิน 5 พิกเซล (ขอบเขตสีดำหนา 1 พิกเซลแสดงอยู่ในตัวอย่างด้านบน)

  • ไม่จำเป็นต้องใช้ขอบเขตของแวดวง ภูมิภาคอาจเป็นเพื่อนบ้านกันโดยตรง:

    ตัวอย่างที่ 1 เอาท์พุท 3 ตัวอย่างที่ 1 เอาท์พุท 4

    ทั้งสองอย่างนี้เป็นอีกผลลัพธ์ที่ถูกต้องสำหรับตัวอย่างด้านบน

  • แวดวงควรมีความแม่นยำที่สุดเท่าที่จะทำได้โดยใช้อัลกอริธึมการวาดวงกลมหรือไลบรารีกราฟิกของคุณมีให้

  • โดยทั่วไปไม่จำเป็นต้องมีความสมบูรณ์แบบของพิกเซล แต่หากปรับพารามิเตอร์อินพุตให้ใหญ่ขึ้นและใหญ่ขึ้นเท่า ๆ กันภาพที่ได้ควรมีความแม่นยำมากขึ้น

  • อนุญาตให้ลบนามแฝงได้ แต่ไม่จำเป็น

  • ไม่อนุญาตให้ใช้เส้นกริดหรือป้ายกำกับแกนในพื้นหลัง

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

ตัวอย่างเพิ่มเติม

ทั้งหมดใช้อินพุตเหล่านี้กับชุดวงกลมที่แตกต่างกัน:

W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)

ในตัวอย่างใด ๆ สีสามารถสลับและยังคงใช้ได้

Circles =
A. empty list
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80) 

A. เช่น B. เช่น B C. เช่นค D. เช่น D
E. เช่น E F. เช่น F G. เช่น G H. เช่น H
I. เช่นฉัน J. เช่น J K. เช่น K L. เช่น L

ตรวจสอบให้แน่ใจว่าผลลัพธ์ของคุณทำงานคล้ายกับตัวอย่างเหล่านี้ทั้งหมด


มันดูดีเราเอาท์พุทเป็น ascii ได้ไหมตัวอย่างเช่น C1 คือ 1 และ C2 คือ 0?
Matthew Roh

@ MatthewRoh ไม่ฉันรู้ว่ามันจะสะดวก แต่จำเป็นต้องใช้รูปภาพ
งานอดิเรกของ Calvin

1
โอเคฉันเดาว่าฉันจะนับได้tikz
Wheat Wizard

1
@MatthewRoh , netpbmเป็นรูปแบบภาพที่ใช้กันทั่วไปในเว็บไซต์นี้
Peter Taylor

2
@Luis Ok รูปแบบอินพุตขนาดเล็กเช่นนั้นหรือมีแกน y เพิ่มขึ้นเป็นไร
งานอดิเรกของ Calvin

คำตอบ:


14

Mathematica, 165 ไบต์

ContourPlot[Cos@Tr[Boole[Norm[{x,y}-#2]<#]Pi&@@@#4],{x,0,#},{y,0,#2},PlotPoints->5!,AspectRatio->Automatic,Frame->False,ContourShading->RGBColor@@@#3,Contours->{0}]&

ฟังก์ชั่นบริสุทธิ์รับสี่ข้อโต้แย้ง: ความกว้างความสูง (ทั้งจำนวนเต็ม) คู่สั่งของตัวเลขระหว่าง 0 และ 1 (แสดงถึงสองสี RGB) และรายการของรายการของแบบฟอร์ม{r, {x, y}}เพื่อบันทึกรัศมีและศูนย์ของ วงกลม ยกตัวอย่างเช่นตัวอย่างแรกใน OP [300, 200, {{1, 0.784, 0}, {0.5, 0, 1}}, {{25, {50, 80}}, {40, {80, 120}}, {300, {-100, 6}}, {17, {253, 162}}}]จะเรียกว่ามีข้อโต้แย้ง แกน y บวกชี้ขึ้นใน Mathematica

Norm[{x,y}-#2]<#ตรวจสอบว่ามีจุดอยู่ภายในวงกลมที่กำหนดหรือไม่ Boole[...]Piแปลงที่TrueหรือFalseไปหรือπ 0หลังจากคำนวณπs / 0s เหล่านั้นให้ครอบคลุมทุกวงการอินพุทให้รวมTrมันเข้าด้วยกันแล้วCosแปลงเป็นทวีคูณของπถึง 1, ทวีคูณทวีคูณของπถึง –1 แล้วสีภูมิภาคที่เหมาะสมของเครื่องบินในสองสีขึ้นอยู่กับว่ามีค่าเป็นมากหรือน้อยกว่าContourPlot[...,Contours->{0}] ทำให้วงกลมดูเหมือนวงกลม ให้ความแม่นยำที่เหมาะสม (เพิ่มให้ถ้าคุณต้องการภาพที่น่าทึ่งจริงๆในอนาคต!); กำจัดแกน และใช้สีอินพุตสำหรับรูปทรง0AspectRatio->AutomaticPlotPoints->5!9!Frame->FalseContourShading->RGBColor@@@#3

ตัวอย่างผลลัพธ์ด้วยสีคู่แรก (เนื่องจากเป็นสีที่ดี) แต่เป็นวงกลมชุดสุดท้าย:

ตัวอย่างผลลัพธ์


11

JavaScript / SVG / HTML5, 219 ไบต์

f=// for demo
(w,h,b,f,a)=>`<svg width=${w} height=${h}><rect width=${w} height=${h} fill=rgb(${b}) /><path fill=rgb(${f}) fill-rule=evenodd d=${a.map(([r,x,y])=>[`M`+x,y-r+`a`+r,r,0,0,0,0,r+r+`a`+r,r,0,0,0,0,-r-r]).join``} /></svg>`
;//demo
[[`A`, []],
 [`B`, [[13, 16, 20]]],
 [`C`, [[30, 16, 20]]],
 [`D`, [[200, 16, 20]]],
 [`E`, [[42, 50, 20]]],
 [`F`, [[42, 50, 20], [17, 40, 30]]],
 [`G`, [[42, 50, 20], [17, 20, 30]]],
 [`H`, [[42, 50, 20], [17, 10, 30], [10, 50, 30]]],
 [`I`, [[42, 50, 20], [17, 10, 30], [35, 50, 20]]],
 [`J`, [[18, 36, 40], [18, 63, 40], [18, 50, 20]]],
 [`K`, [[100, -10, -20], [60, 50, -10]]],
 [`L`, [[18, 36, 40], [18, 63, 40], [18, 50, 20], [14, 50, 20], [5, 50, 18], [20, 0, 0], [70, 22, 0], [10000, -9970, 0], [135, 100, -80]]]
 ].forEach(([c, a])=>document.write(`<nobr><tt>&nbsp;${c}.&nbsp;</tt>${f(100, 60, [255, 0, 0], [0, 0, 255], a)}</nobr><wbr>`));


10

BBC Basic, 120 117 bytes

ดาวน์โหลดล่ามได้ที่http://www.bbcbasic.co.uk/bbcwin/bbcwin.html

I.w,h,R,G,B,r,g,b:V.22,4,19;16,r,g,b,275;16,R EORr,G EORg,B EORb,24,0;0;w;h;16
5I.r,x,y:V.25,4,x;h-y;25,154,r;0;:G.5

BBC Basic มีโหมดสีให้เลือกมากมายให้คุณพล็อตกราฟิคแบบแรสเตอร์ตามการใช้งานของลอจิกพื้นฐาน: OR, AND, XOR เป็นต้น

นอกจากนี้ยังสนับสนุนการเขียนโปรแกรมใหม่แบบ pallete ซึ่งหมายความว่าตัวอย่างเช่นที่นี่ภาพสี 2 สีสามารถกำหนดสีใหม่ให้เป็น 4096 สี การใช้งานที่นี่มีความแตกต่าง (ไม่มีเอกสาร) จากการนำ BBC ไปใช้งานจริงซึ่งผู้ให้บริการ EOR ไม่จำเป็น

Ungolfed

  INPUTw,h,R,G,B,r,g,b:                           :REM Input size and colours
  VDU22,4                                         :REM Change to MODE 4 (2 colours) as the default mode gives odd behaviour
  VDU19,0,16,r,g,b,19,1,16,R EORr,G EORg,B EORb   :REM Reprogram the colours to R,G,B and R^r,G^g,B^b
  VDU24,0;0;w;h;16                                :REM Setup a graphics viewport of the right size, and "clear" it to change background colour
5 INPUTr,x,y                                      :REM take input coordinates
  VDU25,4,x;h-y;                                  :REM move to x,y (h-y required as BBC BASIC y axis increases upward, reverse of spec)
  VDU25,154,r;0;                                  :REM draw circle in "logical inverse colour" of existing pixels (this implementation seems however to XOR with colour 1 instead)
  GOTO5                                           :REM repeat infinitely until user presses escape

หน้าจอแสดงผลทั่วไป

ตัวอย่างภาพที่ปรับขนาดเพิ่มขึ้น 10 เท่าในหน่วย / ปัจจัย 5 เป็นพิกเซล (พื้นฐานของ BBC ใช้ 1 พิกเซล = 2 หน่วย)

ป้อนคำอธิบายรูปภาพที่นี่


10

MATL , 30 29 25 ไบต์

2ZG:i:!J*+2&!-|i<so2&!1YG

รูปแบบอินพุต:

  • Colormap เป็นเมทริกซ์ของค่าระหว่าง 0 ถึง 255 โดยที่แต่ละแถวจะกำหนดสี
  • W
  • H
  • คอลัมน์เวกเตอร์ของพิกัดศูนย์กลาง 1 ตามเป็นค่าที่ซับซ้อน ( xคือส่วนจริง, yคือส่วนจินตภาพ)
  • เวกเตอร์คอลัมน์ของรัศมี

ลองที่MATL ออนไลน์! หรือตรวจสอบกรณีการทดสอบที่ผ่านมา (ล่ามยังคงอยู่ในช่วงทดลองคุณอาจต้องรีเฟรชหน้าเว็บแล้วลองอีกครั้งหากไม่ได้ผล)

คำอธิบาย

รหัสใช้ตัวเลขที่ซับซ้อนในการกำหนดตารางของจุดและระยะทางที่คำนวณและทำให้การใช้งานหนักของการดำเนินงานที่มีอาร์เรย์กระจายเสียง

2ZG    % Implicitly input matrix of colors. Set as colormap
:      % Implicitly input W. Push [1 2 ... W]
i:     % Input H. Push [1 2 ... H]
!J*    % Transpose, multiply by 1i
+      % Add element-wise with broadcast. Gives H×W grid of points as
       % complex numbers, 1-based 
2&!    % Permute first dimension with the third. Gives a 1×W×H array
-|     % Implicitly input center coordinates. Subtract grid from them,
       % element-wise with broadcast. Gives a C×H×W array, where C is the
       % number of circles
i      % Input column vector of circle radii
<      % Less than, element-wise with broadcast
so     % Sum along first dimension, modulo 2. Gives a 1×W×H array
2&!    % Permute first dimension with the third. Gives a a H×W array
1YG    % Display as scaled image

2
ฉันบอกว่าช่วย Bytes! : D
Greg Martin

1
@GregMartin คุณพูดถูก ใครสนใจเรื่องความสง่างามเมื่อสามารถบันทึกได้ 4 ไบต์! :-) เสร็จแล้ว
Luis Mendo

1
@ LuisMendo ยิ่งสั้นลงด้วย codegolf ไม่ว่ามันจะน่าเกลียดแค่ไหน ;)
Kevin Cruijssen

6

Python ใช้pypng , 140 138 ไบต์

import png
f=lambda W,H,c,d,C:png.from_array([[[c,d][sum(abs(x-X+1j*(y-Y))<r for r,x,y in C)%2]for X in range(W)]for Y in range(H)],'RGB')

ตัวอย่างการใช้งาน:

W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
Circles = (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
f(W, H, C1, C2, Circles).save('test.png')

ขอบคุณ xnor สำหรับการบันทึก 2 ไบต์


ยินดีต้อนรับสู่โค้ดกอล์ฟ! abs(x-X+1j*(y-Y))<rสำหรับการตรวจสอบหากมีการจุดโกหกในวงกลมหนึ่งเคล็ดลับคือการใช้บรรทัดฐานที่ซับซ้อน:
xnor

3

คณิตศาสตร์ (ไม่ใช่การแข่งขัน)

(idk วิธีการทำ LaTeX ใน PPCG ดังนั้นฉันจึงใช้เครื่องมือ LaTeX to png)

คำอธิบาย

ผลคูณของสมการวงกลมหลายวง ( (x-a)^2+(y-b)^2-r^2)> = 0 จะสร้างกราฟที่คำถามนี้ต้องการ ในสมการnคือขนาดของอาร์เรย์และ(x, y or r)_kเป็นkวันที่(x, y, or r)องค์ประกอบ

ตัวอย่าง

(0,0,2),(2,2,2)

(ขอบคุณ WolframAlpha)

(พล็อตความไม่เท่าเทียมกันโดย WolframAlpha)

รับ / Run สมการสำหรับ WolframAlpha

กำลังรับสคริปต์: เสร็จสมบูรณ์

กำลังเรียกใช้สคริปต์: ยังไม่เสร็จ

ตอนนี้ทำให้มันทำงานร่วมกับ Mathematica ...


ฉันสงสัยว่าสิ่งนี้ถูกต้องหรือไม่
Matthew Roh

คุณจะต้องแสดงรายการล่ามที่มีอยู่แล้วที่จะพล็อตเอาท์พุทในรูปแบบที่คุณต้องการจากอินพุตนั้น นั่นทำให้มันเป็นไปได้ที่จะนับจำนวนไบต์ในนั้น ในปัจจุบันปัญหาคือเนื่องจากมันไม่ได้เชื่อมโยงกับล่ามจึงไม่ได้เชื่อมโยงกับรูปแบบเฉพาะสำหรับการแทนสมการดังนั้นสัญกรณ์จึงไม่เป็นทางการและไม่สามารถนับได้อย่างเป็นกลาง มีโปรแกรมมากมายสำหรับการพล็อตกราฟของสมการรอบ ๆ ดังนั้นจึงควรลองหาโปรแกรมที่มีรูปแบบอินพุตแบบย่อ

@ ais523 โอ้ ฉันจะพยายามทำให้มันทำงานกับ WolframAlpha
Matthew Roh

1

Python 2.x, 166 158

import re;def f(W,H,c,d,C):print'P3',W,H,255,re.sub('[^0-9]',' ',repr([[d,c][sum([abs(x-X+1j*(y-Y))<r for r,x,y in C])%2]for Y in range(H)for X in range(W)]))

ฟังก์ชั่นสร้างไฟล์ PPM บนเอาต์พุตมาตรฐาน

ตัวอย่าง:

W = 300
H = 200
C1 = (255, 200, 0)
C2 = (128, 0, 255)
Circles = [(25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)]

f(W, H, C1, C2, Circles)

ตัวอย่าง


1

Common Lisp + Quicklisp + ZPNG 260 + 20 = 280 chars

นี่คือรหัสที่กว้างที่สุดที่ฉันเคยเขียนใน CL และถ้าฉันไม่ได้ทำรหัสกอล์ฟฉันจะปรับโครงสร้างนี้เพื่อให้อ่านง่ายขึ้น ...

โหมโรง (20 ตัวอักษร)

(ql:quickload 'zpng)

Golfed (260 ตัวอักษร)

(lambda(w h g b c)(make-instance'zpng:png :image-data(coerce(loop :for j :below h :nconc(loop :for i :below w :append(if(evenp(count t(mapcar(lambda(c)(<(abs(complex(-(cadr c)i)(-(caddr c)j)))(car c)))c)))g b)))'(array(unsigned-byte 8)(*))):width w :height h))

Ungolfed:

(ใช้ defun เพื่ออนุญาตการทดสอบและชื่อตัวแปรที่ยาวขึ้นเพื่อให้สามารถอ่านได้)

(defun mk-png (width height color1 color2 circles)
  (make-instance 'zpng:png
                 :image-data (coerce (loop :for j :below height
                                           :nconc (loop :for i :below width
                                                        :append (if (evenp (count t (mapcar (lambda (circ)
                                                                                              (< (abs (complex (- (cadr circ) i) (- (caddr circ) j)))
                                                                                                 (car circ)))
                                                                                            circles)))
                                                                    color1 color2)))
                                     '(array (unsigned-byte 8) (*)))
                 :width width
                 :height height))

ตัวอย่างการใช้งาน:

(let ((png (mk-png 300 200 '(255 200 0) '(128 0 255) '((25 50 80) (40 80 120) (300 -100 6) (17 253 162)))))
  (zpng:write-png png #p"path/to/file.png"))

ชี้แจง

(lambda (circ)
   (< (abs (complex (- (cadr circ) i) (- (caddr circ) j)))
      (car circ)))

ผลตอบแทนจริงถ้าจุด (i, j) ตกอยู่ภายในวงกลมวงที่กำหนด ระยะทางแบบยุคลิดคำนวณโดยใช้ค่าสัมบูรณ์ของจำนวนเชิงซ้อนซึ่งแทนเวกเตอร์จาก (i, j) ถึงจุดศูนย์กลางของวงกลม

(evenp (count t (mapcar ___
                         circles)))

แมปฟังก์ชั่นนั้นในรายการแวดวงและตรวจสอบว่าจุดที่กำหนด (i, j) ตกอยู่ในจำนวนวงกลม

(if ____
     color1 color2)

เลือกสีตามการทดสอบนั้น

(loop :for j :below height
       :nconc (loop :for i :below width
                    :append ____))

รวบรวมรายชื่อแบบแบนของไบต์ rgb ทั้งหมดด้วยการวนลูปแต่ละอัน (i, j) ในภาพและต่อท้ายรายการผลลัพธ์เข้าด้วยกัน

(coerce ____
         '(array (unsigned-byte 8) (*)))

แปลงรายการไบต์เป็นอาร์เรย์ที่เหมาะสมดังนั้น zpng จึงสามารถนำเข้าไปได้อย่างถูกต้อง

(make-instance 'zpng:png
                :image-data ____
                :width width
                :height height)

สร้างวัตถุ png

(defun mk-png (width height color1 color2 circles)
   ___)

สร้างฟังก์ชั่นที่จะใช้ความกว้างความสูงสองสีและรายการของแวดวงและส่งคืนวัตถุ png ที่สร้างขึ้น


0

JavaScript (ES6), 224 ไบต์

ฉันเห็นโซลูชัน JS + SVG แต่ฉันเพิ่งสร้างโซลูชันแบบอิง Canvas ;-) นี่คือฟังก์ชันที่ส่งคืนองค์ประกอบ Canvas หากสามารถให้องค์ประกอบผ้าใบที่มีอยู่ให้ลบ 40 ไบต์

โทรเหมือน f(width, height, [[r1, g1, b1], [r2, g2, b2]], [[r1, x1, y1], [r2, x2, y2], ...])

let f =
(w,h,a,c,O=document.createElement`canvas`)=>{O.width=w;O.height=h;C=O.getContext`2d`;for(y=0;y<h;y++)for(x=0;x<w;x++)C.fillStyle=`rgb(${a[c.filter(([R,X,Y])=>(X-x)**2+(Y-y)**2<R**2).length%2]})`,C.fillRect(x,y,1,1);return O}

let tests = A.innerHTML.match(/.+/g);
A.innerHTML = "";
for (let i of tests) {
  let p = document.createElement("span");
  p.innerHTML = "<br>" + i.slice(0, 3);
  p.style["font-family"] = "monospace";
  A.append(p);
  A.append(f(100, 60, [[255,0,0], [0,0,255]],
    eval(`[${ i.slice(3).replace(/\(/g, "[").replace(/\)/g, "]") }]`)
  ));
}
<div id=A>
A. 
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
</div>

ตัวอย่างผลลัพธ์:

วงกลมสองสี


0

Löve2D , 353 ไบต์

o=love.graphics
a=arg
w,h,r,g,b,R,G,B=...c={}for i=9,#a,3 do
c[#c+1]={a[i],a[i+1],a[i+2]}end
C=o.newCanvas(w,h)o.setCanvas(C)o.clear(R,G,B)for k,v in pairs(c)do
o.stencil(function()o.circle("fill",v[2],v[3],v[1],9^3)end,"invert",1,true)end
o.setStencilTest("greater",0)o.setColor(r,g,b)o.rectangle("fill",0,0,w,h)local
C:newImageData():encode("png","c")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.