코드를 사용하여 아름다운 기하학 예술을 만들다.
18290 단어 codinggeometricgenerativeart
코드를 사용하여 아름다운 기하학 예술을 만들다.
순환, 제어 흐름과 전용 함수 등 기본 코드를 사용하여 기하학적 예술품을 생성한다.
g2D 기하학 예술 실례
장치
가지러 가다
$ go get -u github.com/lucasepe/g2d
사용 가능한 버전
Here you can find g2d
already compiled:
$ go get -u github.com/lucasepe/g2d
사용 방법
로컬
g2d
스크립트를 실행하려면:$ g2d /path/to/my-script.g2d
웹에 저장된 g2d
스크립트를 실행하려면:$ g2d http://my-cool-site.com/remote/path/to/my-script.g2d
--directory
플래그를 사용하여 생성된 PNG 이미지에 대한 대상 폴더를 지정합니다.d 프로그래밍 언어 문법
예시 프로그램은 examples/ 아래에서 찾을 수 있으며, 이 내용과 표준 라이브러리의 일부 내용을 보여 준다.
타입
g2D는 다음과 같은 데이터 유형이 있다.
g2D
,bool
,int
,float
,str
,array
와 fn
.타입
구문
필기
부울
true false
지력.0 42 1234 -5
기호가 있는 64비트 정수입니다.떠다니다
0.5 4.2 1.234 -5.5
64비트 더블 정밀도 부동 소수점str
"" "foo" "\"quotes\" and a\nline break"
변경되지 않는 바이트 배열입니다.어레이
[] [1, 2] [1, 2, 3]
확장형 어레이append()
내장형 어레이 사용)fn
fn(a, b) { ... }
사용자 정의 함수 정의바인딩
변수는
:=
연산자를 사용하여 한정한다.a := 3
b := 1.2
변수는 정수, 부동점, 문자열 또는 배열/해시일 수 있습니다.변수를 업데이트하려면 equals
=
연산자를 지정합니다.a := 3 // Binding
a = a + 5 // Updating
산술 연산
g2D
지원int
과 float
유형의 모든 기본 산술 연산.a := 5
b := 3
c := a + b
d := c / 2
e := d * d
내장 용기
g2d
에는 내장 용기가 있다. array
.어레이
배열은 선형 순서에 따라 항목을 구성하는 목록이다.수조는 여러 종류를 수용할 수 있다.
a := [1, 2.3, "hello!"]
b := [false, true, "Hello World", 3, 3.13]
push
내장 함수를 사용하여 스토리지에 추가:a = append(a, "another")
이렇게 배열의 컨텐트를 반복할 수 있습니다.i := 0
while( i < len(a) ) {
print( "Array index ", i, " contains ", a[i], "\n")
i = i + 1
}
포함된 정의는 다음과 같은 출력을 생성합니다.Array index 0 contains 1
Array index 1 contains 2.3
Array index 2 contains hello!
Array index 3 contains another
기능
g2D
fn
를 사용하여 함수를 정의합니다. 이 함수는 변수에 지정되어 이름/호출에 사용됩니다.sum := fn(a, b) { return a + b }
print(sum(5,3), "\n") // Outputs: 8
print(sum(2.5,7.5), "\n") // Outputs: 10
함수는 다른 함수에 값으로 전달할 수 있습니다.addTwo := fn(a, b, f) {
return 2 + f(a, b)
}
tot := addTwo(68, 1, sum)
print(tot, "\n") // Outputs: 71
함수 중의 함수multiplier := fn(q) {
return fn(x) {
return x*q
}
}
multThree := multiplier(3)
print(multThree(2), "\n") // Outputs: 6
print(multThree(3), "\n") // Outputs: 9
print(multThree(4), "\n") // Outputs: 12
If else 문
g2D
지원if-else
문장.max := fn(a, b) {
if (a > b) {
return a;
} else {
return b;
}
}
print( max(1, 2) ) // Outputs: 2
Switch 문
g2D
지원switch
및 case
표현식:switch n := randi(10) {
case n % 2 == 0 {
print(n, " is even", "\n")
}
default {
print(n, " is odd", "\n")
}
}
While 주기
g2D
하나의 순환 구조만 지원하고 while
순환:i := 30
while (i > 0) {
print(i, " ")
i = i - 10
}
// 30 20 10
내장 함수
핵심
기능
묘사
exit([status])
지금 옵션 상태 또는 0으로 프로그램 종료input([prompt]
표준 입력에서 한 줄을 읽으면 지정한 힌트를 인쇄할 수 있습니다print(...)
문자열을 표준 출력으로 내보내기printf(pattern, ...)
문자열을 stdout에 출력 (지정한 패턴에 따라 포맷)sprintf(pattern, ...)
printf(...)
와 유사하지만 문자열을 반환합니다.bool(val)
값을 부울 값으로 변환float(val)
십진수 값str를 부동 소수점 값으로 변환 - val이 잘못되면 null로 되돌려줍니다int(val)
십진수str를 int로 변환하기 - val이 잘못되면 null로 되돌려줍니다str(val)
val의 문자열 표현 형식을 되돌려줍니다len(iterable)
iterable (문자열이나 그룹) 의 길이를 되돌려줍니다.append(array, val)
새 그룹을 되돌려줍니다. 그 값은 그룹의 끝으로 밀려납니다.계산하다
기능
묘사
abs(x)
x의 절대값을 되돌려줍니다atan(x)
x의 어차피 커팅 값을 되돌려줍니다. (호도 단위)atan2(x, y)
어차피cos(x)
호도 매개 변수 x의 여현을 되돌려줍니다degrees(angle)
호도를 도로 바꾸다hypot(p, q)
신고서sqrt(p*p + q*q)
lerp(start, stop, amt)
특정 증량으로 두 숫자 사이의 숫자를 계산하다map(v, b1, e1, b2, e2)
숫자를 한 범위에서 다른 범위로 다시 비추다max(v1....vn)
숫자 서열의 최대 값을 되돌려줍니다min(v1....vn)
숫자 서열의 최소값을 되돌려줍니다pow(x, y)
반환x**y
,y의 기x지수sin(x)
호도 매개 변수 x의 정현값을 되돌려줍니다sqrt(x)
x의 제곱근을 되돌려줍니다radians(angle)
도 측정 값을 대응하는 호도 값으로 바꾸다randf([min], [max])
최소값과 최대값 사이의 무작위 부동 소수점 값을 되돌려줍니다 - 기본적으로 최소값 = 0.0, 최대값 = 1.0randi([min], [max])
최소값과 최대값 사이의 무작위 정수를 되돌려줍니다기본 그래픽 기능
기능
묘사
size(w,[h])
도면의 크기 설정하기;w와 h를 동시에 지정하면 사각형 이미지가 만들어지고 그렇지 않으면 제곱 이미지가 만들어집니다.viewport(xMin, xMax, yMin, yMax, xOffset, yOffset)
사용자정의 좌표계 설정하기;화면 재설정 수행(그래픽 지우기)clear()
전체 이미지를 현재 색상으로 채우기;모든 도면 지우기fillColor(hexcolor)
채움 색상을 지정된 육각형 색상으로 설정하기;샘플 fillColor("ff0000")fillColor(r, g, b, [a])
채우기 색상을 r, g, b, a 값으로 설정 - 0과 255 사이(0과 255 포함)strokeColor(hexcolor)
획 색상을 지정된 육각형 색상으로 설정하기;strokeColor("ff0000") 예strokeColor(r, g, b, [a])
획 색상을 r, g, b, a 값으로 설정합니다. 0과 255 사이여야 합니다. 0과 255을 포함합니다.strokeWeight(weight)
획 두께를 지정된 너비로 설정합니다.dashes([s1, s2, ...sn])
사용할 현재 대시 모드 설정(대시를 비활성화하려면 0 매개변수 호출 사용)stroke()
현재stroek 색상과 선폭을 사용하여 현재 경로를 그리면 경로가 지워집니다fill()
현재 충전 색깔로 현재 경로 채우기;열린 하위 경로는 암시적으로 닫혔습니다.이 작업을 수행하면 경로가 지워집니다.fillAndStroke()
현재 충전 색깔로 현재 경로를 채우고 현재 획 색깔로 획을 그립니다.이 작업을 수행하면 경로가 지워집니다.push()
도면 컨텍스트를 스택으로 밀어 현재 상태를 저장합니다.pop()
스택에서 마지막으로 저장된 도면 컨텍스트 상태 복원snapshot([filename])
현재 도면을 사용하여 PNG 이미지를 작성합니다.파일 이름이 생략되면, 자동으로 누진 계수기를 생성하고, 이 계수기는 매번 snapshot()
호출될 때마다 증가합니다.나중에 애니메이션을 생성하려는 경우(생성된 모든 PNG 이미지 사용) 유용합니다.xpos()
현재 X 위치로 돌아가기(현재 점이 있는 경우)ypos()
현재 Y 위치로 돌아가기(현재 점이 있는 경우)도형 원어
기능
묘사
arc(x, y, r, sa, ea)
(x, y) 중심의 반지름 r의 호를 그립니다. sa 각도 u에서 시작하여 ea 각도로 끝나는 경로를 따라circle(x, y, r)
[x, y] 좌표를 중심으로 반경이 r인 원을 그려라ellipse(x, y, rx ,ry)
[x, y] 좌표를 중심으로 반경 rx와ry의 타원을 그립니다line(x1, y1, x2, y2)
점(x1, y1)에서 점(x2, y2)으로 선 그리기point(x, y)
지정된 좌표에 점을 그립니다(크기는 획 가중치와 같음).quad(x1, y1, x2,y2, x3,y3, x4,y4)
제공된 정점을 사용하여 사각형 그리기rect(x, y, w, h, [tl, tr, br, bl])
왼쪽 위 모서리(x, y)에 있는 (가로 x 높이) 사각형을 그립니다.반경 하나만 지정하면 모든 모퉁이가 같은 굴곡도를 가지고 있고, tl,tr,br,bl을 지정하면 각 모퉁이마다 다른 곡률을 가질 수 있다triangle(x1,y1, x2,y2, x3,y3)
제공된 정점을 사용하여 삼각형 그리기star(cx, cy, n, or, ir)
성형 cx를 그려라.cy는 중심이고 n은 첨봉수이며,ir는 외반경과 내반경이다경로
기능
묘사
beginPath()
새로운 길을 열다closePath()
현재 점에서 현재 하위 경로로 세그먼트 추가 시작moveTo(x, y)
지정한 x, y 점에서 시작하는 새 하위 경로의 시작점을 설정합니다lineTo(x, y)
현재 점에서 시작하는 현재 경로에 선 세그먼트 추가하기arcTo(x1, y1, x2, y2, r)
주어진 제어점과 반지름을 사용하여 현재 하위 경로에 호 추가하기quadraticCurveTo(x1, y1, x2, y2)
현재 하위 경로에 두 번째 Bézier 커브 추가하기;x1, y1은 제어점, x2, y2는 끝점바꾸다
기능
묘사
rotate(angle, [x, y] )
시계 반대 방향으로 회전하여 현재 행렬 업데이트하기;x, y를 지정하면 점 주위를 회전하고 그렇지 않으면 원점 주위를 회전합니다(각도는 호도 단위).scale(sx, sy, [x, y])
sx,sy 비례 인자로 현재 행렬 업데이트하기;x, y를 지정하면 점을 기준으로 배율이 조정되고 그렇지 않으면 원점을 기준으로 배율이 조정됩니다.translate(x, y)
현재 행렬을 x와 y로 변환identity()
현재 변환 매트릭스를 단위 매트릭스로 재설정transform(x, y)
점 x, y를 현재 행렬에 곱하여 변환된 위치로 되돌려줍니다텍스트
기능
묘사
text(str, x, y, [ax, ay])
지정한 위치점 x, y에 지정한 텍스트str 그리기;포지셔닝 포인트는 x-w*ax, y-h*ay, 그 중에서 w, h는 텍스트의 크기입니다(기본적으로 ax=0.5,ay=0.5는 텍스트를 지정한 점에 가운데로 배치합니다)textWidth(str)
현재 글꼴에 지정한 텍스트str의 표시 폭을 되돌려줍니다fontSize(size)
글꼴 높이 설정이미지
기능
묘사
imageGet(path/to/png)
로컬 파일 시스템에서 PNG 이미지 로드imageAt(im, x, y, [ax, ay])
지정한 위치점 x, y에서 지정한 그림im 그리기;(ax와 ay는 x와 y 편이) ax=0.5,ay=0.5로 그림을 지정한 점에 가운데로 놓기
Reference
이 문제에 관하여(코드를 사용하여 아름다운 기하학 예술을 만들다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lucasepe/craft-beautiful-geometric-art-using-code-8i8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)