나는 마름모를 정말로 원했지만, 내가 얻은 것은이 바보 같은 직사각형이었습니다.


33

직선과 나침반 만 주어지면, 주어진 사각형 안에 마름모를 그려서 두 개의 반대 점을 공유하십시오.

사각형 마름모

입력

입력은 사각형의 치수입니다. 표시된 예에서 이는입니다 125, 50. 가장 편리한 방법 (정수,리스트, 문자열 등)으로 입력 할 수 있습니다.

더 큰 치수는 최소 100이되고 더 작은 치수는 최소 25가됩니다. 두 모자 모두 200입니다.

산출

출력은 이미지 (화면에 표시되거나 파일로 저장 됨)입니다.

  • 입력 사각형
  • 모든 "작업"라인 / 원
  • 새겨진 마름모

뚜렷한 색으로. 위 이미지에서 사각형은 검은 색, 작업 선은 파란색, 마름모는 주황색입니다. 선은 목록에 표시된 순서대로 그려야합니다 (예 : 마름모는 작업 선과 사각형을 덮어 씁니다).

출력 이미지는 모든 것을 포함 할 수있을만큼 커야합니다. 예를 들어, 표시된 원은 경계를 벗어날 수 없습니다.

방법

위의 예제 이미지에 사용 된 방법은 다음과 같습니다.

  • 왼쪽 아래 모서리를 중심으로 사용하고 오른쪽 위를 둘레의 점으로 사용하여 사각형의 대각선과 같은 반지름으로 원을 그립니다.
  • 동일하지만 중심점과 경계점을 교환하십시오.
  • 두 원의 교차점 사이에 선을 그려 직사각형의 대각선에 수직 이등분선을 만듭니다.
  • 새 선과 사각형의 교차점을 사용하여 마름모를 그립니다.

이것은 마름모의 내부 대각선이 항상 서로 수직으로이기 때문에 작동합니다. 그래도 여기에 대한 완전한 증거를 포함 시키지는 않습니다.

이것은 마름모를 얻는 유일한 방법 이 아니며, 당신이하고있는 일을 설명하면 다른 것을 사용할 수 있습니다. 그래도 아마도 가장 쉬운 방법 이라고 생각 합니다.

규칙

원과 선 (또는 선분) 만 그릴 수 있습니다. 원은 중심점과 둘레 점으로 정의됩니다. 선은 두 점으로 정의됩니다. 선은 지정된 길이 일 필요는 없지만 최소한 정의 점을 덮어야합니다 (예제 이미지 참고 : 선은 원 교차점을 약간지나 쳐야하지만 가장자리는 아닙니다). 원의 경우 중심에서 선택한 둘레 지점까지의 반경이 작업 선으로 간주되며 표시되어야합니다.

선을 래스터 화하려면 인식 된 알고리즘 (예 : Bresenham)을 사용하거나 언어에 내장 된 모든 것을 사용할 수 있습니다. 출력이 벡터를 기반 으로하는 경우 입력 사각형보다 픽셀이 큰 해상도 표시되는지 확인하십시오 . 또한 일반 캔버스에 그릴 것이므로 모눈 표시 나 불필요한 출력을 억제하십시오.

컨닝 하지마! 지금까지 설정 한 것을 사용하여 점 / 선 / 원의 배치 만 결정할 수 있습니다. 작업 선 / 원을 사용하여 마름모임을 표시하는 방법을 설명 할 수없는 경우 잘못하고있는 것입니다.

원하는 반대쪽 쌍 쌍을 사용할 수 있으며 출력이 올바른 한 사각형을 축 정렬로 그릴 필요 는 없습니다 .

입력은 항상 정사각형이 아닌 사각형이므로 특별한 경우에 대해 걱정하지 마십시오.

마지막으로, 이것은 표준 코드 골프이므로 바이트 단위의 가장 작은 크기가 이깁니다.


수학 공식을 사용하여 원을 그린 후 원의 교차점 사이에 그려진 선의 끝점을 결정할 수 있습니까 (실제로 이미지를 구문 분석하지 않고 교차점이 어디에 있는지 확인)?
ETHproductions

@ETHproductions 예라고 말하고 싶습니다. 각각과 반지름 사이의 각도가 각 측면에서 60도이며 정삼각형을 형성한다는 것이 매우 쉽습니다. 누구든지 이의가 있으면 기꺼이 듣고 싶습니다.
Geobits

3
첫 번째 입력이 두 번째 입력보다 크거나 그 반대의 경우를 가정 할 수 있습니까? 아니면 세로 및 가로 방향의 직사각형을 모두 처리 할 수 ​​있어야합니까?
Martin Ender

사각형 내부의 짧은 선 세그먼트의 목적은 무엇입니까?
12Me21

답변:


11

HTML + 자바 스크립트 (ES6), 34 + 353 = 387 바이트

입력은 형식으로 제공되어야합니다 [125,50].

[w,h]=eval(prompt(c=C.getContext("2d"))).sort();d=q=>(c.strokeStyle=q,b);l=(x,y=Z)=>x?c.lineTo(x,y)||l:c.stroke();b=(x,y=H,r)=>(c.beginPath(),r?c.arc(x,y,Math.sqrt(r),0,2*Math.PI):c.moveTo(x,y),l);b(Z=300,Z)(W=Z+w)(W,H=Z+h)(Z,H)(Z)();d`red`(Z,H,s=w*w+h*h)();b(W,Z,s)();b(Z)(W)();b(Z+w/2-h,Z+h/2-w)(H+w/2,W+h/2)();d`lime`(Z)(W-s/2/w)(W)(Z+s/2/w,H)(Z,H)()
<canvas id=C width=800 height=800>

많은 수학과 그림 ... 높이가 너비보다 큰 경우 사각형이 옆으로 그려집니다.


Oooh, 10 바이트 미만 444: P
Kritixi Lithos

@KritixiLithos 지금은 10 바이트 미만입니다 400;-)
ETHproductions

높이가 너비보다 클 때 사각형이 마름모에 새겨집니다.
Larkeith

1
@Larkeith Oops, 우리가 그 사건을 다루어야한다는 것을 몰랐습니다. 42 바이트의 비용으로 수정되었습니다.
ETHproductions

당신은 (... 왜 사용했을까요`과 휴식 인하) 몇 바이트를 저장 (공백없이) "`는 getContext`2D"를 사용할 수 있습니다
12Me21

10

매쓰, 157 (148) 158 바이트

평소 고품질의 의견을 주신 Martin Ender에게 감사드립니다! 이 경우 9 바이트가 저장됩니다.

인수가 어느 순서로든 올 수 있음이 명확 해지면 편집되었습니다. 보상하기 위해 10 바이트가 추가되었습니다.

Graphics@{(m=Line)@{o=0{,},{#,0},c={##},{0,#2},o},Blue,m[l={o,c}],Circle[#,(c.c)^.5]&/@l,m[{k={#2,-#},-k}+{c,c}/2],Red,m@{o,p={0,c.c/2/#2},c,c-p,o}}&@@Sort@#&

다시 한 번 Mathematica가 빛을 발하는 곳 : 수학적 계산과 관련된 고급 그래픽 출력. 사람이 읽을 수 있도록 공백과 줄 바꿈이있는 동일한 코드 :

Graphics@{
  (m=Line)@{o = 0{,}, {#, 0}, c = {##}, {0, #2}, o},
  Blue, m[l = {o, c}], Circle[#, (c.c)^.5] & /@ l, 
  m[{k = {#2, -#}, -k} + {c, c}/2],
  Red, m@{o, p = {c.c/2/#2, 0}, c, c - p, o}
} & @@ Sort@# &

양수의 순서 쌍인 단일 인수의 이름이없는 함수; 마지막은 @@ Sort@# &해당 쌍을 첫 번째 숫자가 작은 두 개의 숫자 인수로 변환합니다. Line점간 다각형 경로를 생성하며, 첫 번째 점과 마지막 점이 동일하면 닫힌 다각형으로 바뀝니다. Circle주어진 중심과 반경을 가진 원을 생성합니다. 특수 포인트 oc(왼쪽 및 오른쪽 위 사각형 모서리), p(수학 공식으로 주어진 세 번째 마름모 모서리) 및 k(수직 이등분선을 그리는 데 도움이 됨)에는 다시 호출 할 때 바이트를 저장하는 방법에 따라 이름이 지정됩니다 , 포인트의 특수 쌍과 마찬가지로l = {o,c}. Mathematica는 점을 직접 추가하고 두 좌표에 동일한 요소를 곱하고 점 곱 등을 취하여 코드를 단순화하는 것을 기쁘게 생각합니다.

인수 125와 함께 샘플 출력 50:

여기에 이미지 설명을 입력하십시오


1
불필요한 공백을 다시 넣으십시오. 이 트릭 을 사용하여에 바이트를 절약 할 수 있습니다 {0,0}. blue 및 orange를 사용할 필요가 없으므로 Red대신 대신를 사용하여 바이트를 절약 할 수 있습니다 Orange. Line바이트를 저장하기에 충분한 양을 네 번 사용 하고 있습니다 i=Line;(일반적으로 표현식에 n문자가 있고 m필요한 시간을 (m-1)*(n-1) > 4사용하면 괄호없이 처음 사용할 때 변수를 할당 할 수있는 경우는 적음).
Martin Ender

0{,}트릭은 환상적입니다 : D
Greg Martin

두 번째면이 첫 번째 면보다 길면 이것이 작동하지 않을까 걱정됩니다. 이 추가로 고정 할 수 있도록하지만, 방향이 일치 할 필요는 없습니다 @@Sort@#&및 교환 ##2코드를 전역 또는 대안 대신 세로-방향 사각형 작업에 적응.
Martin Ender

그렇습니다. 이것은 의도적이었습니다 ... 치수가 원하는 순서대로 올 수 있다고 가정 할 수 있는지에 대한 설명을 기다리는 것처럼 보입니다.
Greg Martin


9

MetaPost, 473 (색상) 353 (색상 없음)

컬러 (473 바이트) :

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C withcolor green;draw D withcolor green;draw E withcolor red;draw F withcolor red;draw (F intersectionpoint R)--Y withcolor blue;draw X--(F intersectionpoint T) withcolor blue;draw (F intersectionpoint T)--Y withcolor blue;draw (F intersectionpoint R)--X withcolor blue;

비색 (353 바이트) :

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C;draw D;draw E;draw F;draw (F intersectionpoint R)--Y;draw X--(F intersectionpoint T);draw (F intersectionpoint T)--Y;draw (F intersectionpoint R)--X;

이걸 한번도 사용한 적이 없으며, 그것을 도살했다고 확신합니다 ...
그러나이 웹 사이트에서 실행하면 :

http://www.tlhiv.org/mppreview/

원의 교차점을 사용하여 두 번째 축을 그린 다음 축과 사각형의 교차점을 사용하여 최종 마름모를 그립니다. 속임수를 쓰고 첫 번째 축 haha에 수직 인 선을 그렸습니다.

치수를 변경하려면 A와 B를 변경하십시오.

어쨌든, 당신은 (L = 170, H = 100)로 끝납니다.

영상


3

데스 모스, 375 (또는 163) 바이트

w=125
h=50
\left(wt,\left[0,h\right]\right)
\left(\left[0,w\right],ht\right)
\left(x-\left[0,w\right]\right)^2+\left(y-\left[0,h\right]\right)^2=w^2+h^2
\frac{h}{w}x\left\{0\le x\le w\right\}
-\frac{w}{h}\left(x-\frac{w}{2}\right)+\frac{h}{2}
a=\frac{h^2}{2w}+\frac{w}{2}
\left(t\left(w-a\right)+\left[0,1\right]a,ht\right)
\left(at-\left[0,a-w\right],\left[0,h\right]\right)

wh입력입니다. Desmos에서 사용해보십시오!

대체 163- 바이트 버전 :

w=125
h=50
(wt,[0,h])
([0,w],ht)
(x-[0,w])^2+(y-[0,h])^2=w^2+h^2
hx/w\left\{0\le x\le w\right\}
-w(x-w/2)/h+h/2
a=h^2/2/w+w/2
(t(w-a)+[0,1]a,ht)
(at-[0,a-w],[0,h])

이 버전을 사용하려면 각 줄을 복사하여 Desmos에 별도의 줄로 붙여 넣어야합니다. 메타는 여전히 이것이 유효한 카운팅 방법인지 결정해야하지만, 전자의 방법은 확실히 좋습니다.


이것은 입력 사각형이 가로 방향이며 작업에 지정되지 않은 것으로 가정합니다.
Henning Makholm

1
나에게 "직사각형을 축 정렬하여 그릴 필요는 없다"는 가로 방향과 세로 방향을 포함하여 보존해야하는 사각형에 미리 정해진 방향이 없다는 것을 의미합니다.
Greg Martin

크기 만 제공되고 (좌표 아님) 크기가 정확하다고 가정하면 원하는대로 출력이 정렬 될 수 있습니다.
Geobits

내가 Desmos을보고 있어요 처음 : 골프를 치는 언어로 사용
Kritixi LITHOS

3

ImageMagick 버전 7.0.3 + bash + sed, 496 바이트

M=magick
L=$((400-$(($1))/2)),$((400+$(($2))/2))
R=$((400+$(($1))/2)),$((400-$(($2))/2))
Z=" $L $R" Y=" -1 x";D=' -draw' K=' -stroke'
A=' -strokewidth 3 +antialias -fill'
$M xc:[800x]$A none$K \#000$D "rectangle$Z"$D "line$Z"$K \#00F8$D "circle$Z"$K \#0F08$D "circle $R $L" -depth 8 png:a
$M a txt:-|sed "/38C/!d;s/:.*//">x;P=`head$Y`;Q=`tail$Y`
$M a$A \#F008$K \#F008$D "line $P $Q" b
$M b txt:-|sed "/C70/!d;s/:.*//">x;S=`head$Y`;T=`tail$Y`
$M b$A \#F804$K \#F80$D "polyline $L $S $R $T $L" x:

"rhombus.sh 180120"의 결과

여기에 이미지 설명을 입력하십시오

더 정확한 (800x800 대신 6400x6400 캔버스 사용), 570 바이트

교차점은 정확하지 않습니다. "strokewidth"지시문은 최소한 하나의 전체 픽셀이 두 개의 교차하는 선의 색상과 혼합 될 수있을만큼 선의 너비를 넓 히지 만 최악의 경우 (25x200 및 200x25) 교차점이 작은 각도로 구름 혼합 픽셀 수는 몇 픽셀 길이이며 첫 번째와 마지막 혼합 픽셀을 선택하기 때문에 약간의 오류가 있습니다. 획 너비가 같은 8 배 더 큰 캔버스를 사용한 다음 결과를 축소하면 오류가 1 픽셀 미만으로 줄어들지 만 약 64 배의 시간이 소요됩니다.

M=magick
L=$((3200-$(($1))*4)),$((3200+$(($2))*4))
R=$((3200+$(($1))*4)),$((3200-$(($2))*4))
K=-stroke;A='-strokewidth 3 +antialias'
$M xc:[6400x] $A -fill none $K \#000 -draw "rectangle $L $R" \
-draw "line $L $R" $K \#00F8 -draw "circle $L $R" \
$K \#0F08 -draw "circle $R $L" -depth 8 png:a 
$M a txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`
$M a $A -fill \#F008 $K \#F008 -draw "line $P $Q" png:b
$M b txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`
$M b $A -fill \#F804 $K \#F80 -draw "polyline $L $S $R $T $L" -resize 800 x:

정확한 800x800 대 정확한 6400x6400의 결과 :

정상 vs 정확한 결과

언 골프 드 :

# rhombus.sh
# Inscribe a rhombus in the rectangle with dimensions 2*$1, 2*$2

# Run with "rhombus.sh W H"

M=magick

W=${1:-100};H=${2:-40}

# L locates the lower left corner of the rectangle
L=$((400-$((W))/2)),$((400+$((H))/2))

# R locates the upper right corner of the rectangle
R=$((400+$((W))/2)),$((400-$((H))/2))

# We'll need this several times
A='-strokewidth 3 +antialias'

# Establish 800x800 canvas (white) (circles + rectangle will
# always fit in 764x764)
#
# Draw the W x H rectangle (black) in center of canvas
#
# Draw two circles (blue, 50% alpha [#00F8] and green, 50% alpha [#0F08])
#  one centered at point L with peripheral point R
#  the other centered at point R with peripheral point L

$M xc:[800x] $A -fill none \
       -stroke \#000  -draw "rectangle $L $R" \
                      -draw "line      $L $R" \
       -stroke \#00F8 -draw "circle    $L $R" \
       -stroke \#0F08 -draw "circle    $R $L" \
       -depth 8 a.png 

# Find P and Q, the 2 intersections of the circles,
# that have mixed color #38C077 
$M a.png txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`

# Draw line connecting the intersections P and Q
$M a.png $A -fill \#F008 -stroke \#F008 -draw "line $P $Q" b.png

# Find S and T, the 2 intersections of the line with the original rectangle,
# that have mixed color #C70000
$M b.png txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`

# Draw the rhombus
$M b.png $A -fill \#F804 -stroke \#F80 -draw "polyline $L $S $R $T $L" d.png

교차로를 감지하는 방식이 마음에 듭니다. 마지막 혼합 색상이 맞습니까? 마름모 모양처럼 보이고 사각형이 약간 꺼져 있기 때문에 묻습니다. 앤티 앨리어싱으로 인해 색상이 약간 벗어난 곳 에서 감지 될 수 있다고 생각했습니다 (스트로크 너비도 가능).
Geobits

2

R, 290 바이트

function(A,B,p=polygon){R=A^2+B^2
D=2*A
a=sqrt(R)*cbind(cos(t<-seq(0,2*pi,.01)),sin(t))
b=t(t(a)+c(A,B))
x=range(a,b)
plot(NA,xli=x,yli=x,as=1,ax=F,an=F)
rect(0,0,A,B)
segments(0,0,A,B,c=4)
p(a,b=4)
p(b,b=4)
curve(B/2-A*x/B+A^2/2/B,co=4,a=T)
p(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),b=3)}

익명 기능, 출력이 화면에 표시됩니다. 코멘트와 함께 약간 ungolfed :

function(A,B){
    R=A^2+B^2
    D=2*A
    t=seq(0,2*pi,.01)
    a=sqrt(R)*cbind(cos(t),sin(t)) #Circle with (0,0) as center
    b=t(t(a)+c(A,B)) #Second circle transposed to (A,B) center
    x=range(a,b)
    #Empty plot, large enough to fit the 2 circles:
    plot(NA,xlim=x,ylim=x,asp=1,axes=F,ann=F)
    rect(0,0,A,B) #Initial rectangle
    segments(0,0,A,B,col=4) #Rectangle diagonal
    polygon(a,border=4) #Circle 1 (border is b thanks to partial matching)
    polygon(b,border=4) #Circle 2
    curve(B/2-A*x/B+A^2/2/B,col=4,add=T) #Line joining circles intersection
    polygon(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),border=3) #Rhombus
}

(120,100)에 대한 예제 출력 :

여기에 이미지 설명을 입력하십시오


2

LibreLogo , 270 바이트

사용자 입력은 배열로 사용됩니다 : [width, height]또는 [height, width].

암호:

fc [24]
D=180
R=sorted(eval(input "))
W=R[1]
H=R[0]
L=sqrt W**2+H**2
A=D/π*asin(H/L)
Z=A*2
S=L/2/cos A*π/D rectangle[W,H]pc 255 lt A fd 400 bk 800 fd 400 rt A pu bk H/2 lt 90 fd W/2 pd circle L*2 rt D-A fd L circle L*2 pc [5]lt D-A fd S lt Z fd S rt D+Z fd S lt Z fd S

결과:

여기에 이미지 설명을 입력하십시오

설명:

fc [24]                        ; Fill Color = Invisible
D = 180                        ; D = 180° (Saved Bytes)
R = sorted( eval( input " ) )  ; R = Sorted Array of Rectangle Width and Height (User Input)
W = R[1]                       ; W = Rectangle Width
H = R[0]                       ; H = Rectangle Height
L = sqrt W**2 + H**2           ; L = Rectangle Diagonal Length
A = D / π * asin( H / L )      ; A = Rectangle Diagonal Angle°
Z = A * 2                      ; Z = Rectangle Diagonal Angle° * 2 (Saved Bytes)
S = L / 2 / cos A * π / D      ; S = Rhombus Side Length
rectangle [W, H]               ; Draw Rectangle
pc 255                         ; Pen Color = Blue
lt A                           ; Left = Rectangle Diagonal Angle°
fd 400                         ; Forward = 400 pt
bk 800                         ; Back = 800 pt
fd 400                         ; Forward = 400 pt
rt A                           ; Right = Rectangle Diagonal Angle°
pu                             ; Pen Up
bk H / 2                       ; Back = Rectangle Height / 2
lt 90                          ; Left = 90°
fd W / 2                       ; Forward = Rectangle Width / 2
pd                             ; Pen Down
circle L * 2                   ; Draw Left Circle (Radius = Rectangle Diagonal Length)
rt D - A                       ; Right = 180° - Rectangle Diagonal Angle°
fd L                           ; Forward = Rectangle Diagonal Length
circle L * 2                   ; Draw Right Circle (Radius = Rectangle Diagonal Length)
pc [5]                         ; Pen Color = Red
lt D - A                       ; Left = 180° - Rectangle Diagonal Angle°
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
rt D + Z                       ; Right = 180° + Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length

1

Python 3.5 + Tkinter, 433 또는 515 바이트

비 컬러 (433 바이트) :

from tkinter import*
def V(a,b):S=500;Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M);B(Y-M,Z+M,Y+M,Z-M);X(Y,Z,S,S);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];X(S,S,P[0],P[1]);X(Y,Z,P[0],P[1]);X(Y,Z,L[0],L[1]);X(S,S,L[0],L[1]);C.pack(fill=BOTH,expand=1)

컬러 (515 바이트) :

from tkinter import*
def V(a,b):S=500;t='blue';Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M,outline=t);B(Y-M,Z+M,Y+M,Z-M,outline=t);X(Y,Z,S,S,fill=t);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q,fill=t);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];o='orange';X(S,S,P[0],P[1],fill=o);X(Y,Z,P[0],P[1],fill=o);X(Y,Z,L[0],L[1],fill=o);X(S,S,L[0],L[1],fill=o);C.pack(fill=BOTH,expand=1)

쉼표로 구분 된 2 개의 숫자로 입력을받는 명명 된 함수입니다. 전체 출력을 보려면 크기를 조정해야 할 수도있는 별도의 창에 출력이 제공됩니다. 다음은 샘플 컬러 출력입니다 V(180,130).

샘플 출력


0

SmileBASIC, 280 바이트

INPUT W,H
W=MAX(W,H)/4H=MIN(W,H)/4D=SQR(W*W+H*H)N=D+W
M+D+H
GBOX D,D,N,M,#RED
GCIRCLE D,M,D
GCIRCLE N,D,D
GLINE D,M,N,D
X=D+W/2Y=D+H/2A=ATAN(W,H)E=D*H/W/2S=E*COS(A)T=E*SIN(A)GLINE X-S*9,Y-T*9,X+S*9,Y+T*9GCOLOR-#L
GLINE D,M,X-S,Y-T
GLINE D,M,X+S,M
GLINE N,D,X+S,Y+T
GLINE N,D,X-S,D

(스크린 샷 / 설명은 곧 게시 될 예정입니다.) 배경색은 검은 색, 사각형은 빨간색, 원과 선은 흰색, 마름모는 노란색입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.