찾다
웹 프론트엔드CSS 튜토리얼2D 그래픽을 그리는 초보자 가이드 2. JS

A Beginner's Guide to Drawing 2D Graphics With Two.js 2.js는 코드로 2D 모양을 쉽게 만들 수있는 API입니다. 따라 가면 JavaScript에서 모양을 생성하고 애니메이션하는 방법을 배웁니다.

2.js는 렌더러가 아는 사람이 아니므로 동일한 API에 의존하여 캔버스, SVG 또는 WebGL을 사용하여 2D를 그릴 수 있습니다. 라이브러리에는 화면에 다른 모양이 어떻게 나타나는지 또는 애니메이션 방법을 제어하는 ​​데 사용할 수있는 많은 방법이 있습니다. 기본 모양 생성

그룹에서 객체를 조작하는

텍스트를 정의하고 텍스트를 작성하고 쓰기
    Github에서 미니저 버전의 라이브러리를 다운로드하거나 CDN 호스팅 버전에 직접 연결할 수 있습니다. 웹 페이지에 라이브러리를 추가 한 후에는 다른 모양이나 물체를 그리거나 애니메이션 할 수 있습니다.
  • 기본 모양 생성
  • 먼저, 2d를 그리고 셰이프를 애니메이션하려는 요소에 대해 2.js에게 말해야합니다. 일부 매개 변수를 둘에 전달할 수 있습니다. 여기, 2.makerectangle (x, y, 너비, 높이) 및 2.makeccle (x, y, radius) 및 2.makearrow (x1, y1, x2, y2, size)
  • 메소드. y1
  • 값은 화살표의 꼬리 위치를 결정합니다. y2
  • 값은 화살촉의 위치를 ​​결정합니다. 다섯 번째 매개 변수는 화살촉의 크기를 결정합니다.
  • RADIUS
라는 방법이 있습니다. 다른 객체 목록을 전달하거나 객체, 경로 또는 그룹 배열을이 메소드의 매개 변수로 전달할 수 있습니다. 또한 한 번에 fill

, linewidth

값을 반환합니다.

DIV 내부의 어느 곳에서나 클릭하여 직사각형의 위치를 ​​변경할 수 있습니다. 우리는 실제로 그룹의 위치를 ​​설정할 것입니다. 사각형은 그룹의 일부이므로 자동으로 이동합니다.

연습을하려면 코드를 수정하고 직사각형을 두 개의 동일한 그룹으로 나누어야합니다. 고유 한 지오메트리 아트 조각을 만들기 위해 각각 셋째 스트로크 세트 색상 값을 적용하십시오. 그라디언트 정의 및 쓰기 텍스트

2. j. 그라디언트를 정의한다고해서 화면에서 자동으로 렌더링 될 수는 없지만 2.makelineargradient (x1, y1, x2, y2, spets)를 설정할 때 사용할 수 있습니다. 값 새로운 2.Stop (오프셋, 색상, 불투명도)

, 여기서 2.makeradialgradient (x, y, radius, stop, fx, fy) . 이 경우 값 2.maketext (Message, X, Y, Styles) . messag 매개 변수 <code> x y 는 텍스트를 작성하기위한 중심 역할을하는 지점의 좌표입니다. 스타일 매개 변수는 큰 속성 세트의 값을 설정하는 데 사용할 수있는 객체입니다. 는 스타일을 사용하여 font family , <code> size <lignment>와 같은 속성의 값을 설정할 수 있습니다. <code> fill message, stroke , <code> 불투명도 x, 회전과 같은 속성의 값을 지정할 수 있습니다. 이 튜토리얼에서는 2.js를 사용하여주기 테이블의 첫 10 가지 요소를 핵 주위로 회전하는 방법을 보여줍니다. 핵은 또한 우리의 표현의 시각적 매력을 향상시키기 위해 약간의 움직임을 가질 것입니다. <code>y 우리는 나중에 사용될 몇 가지 변수와 함수를 정의하는 것으로 시작합니다. styles 위의 코드는 centerx <code> 센터의 변수에 창 중심의 좌표를 저장합니다. 이것들은 나중에 우리의 원자를 중앙에 배치하는 데 사용됩니다. <code> elementNames 배열에는주기 테이블의 처음 10 개 요소의 이름이 포함되어 있습니다. 각 이름의 인덱스는 해당 요소의 전자 및 양성자 수에 해당하며 빈 문자열로 시작합니다. <code> 스타일 <p> 객체에는 텍스트 객체를 스타일링하기위한 속성이 포함되어 있습니다. <code>family 우리는 또한 intrange () intrange () intrange ()가 주어진 극단 내에서 임의의 정수 값을 정의했습니다. 빨간색/검은 방사형 그라디언트는 양성자를 나타내고, 블루/블랙 그라디언트는 중성자를 나타냅니다. <code>size 우리는 intrange () 기능을 사용하여 이러한 모든 중성자와 양성자를 서로 20 픽셀 내에 배치했습니다. <code> makecircle () 메소드는 또한이 양성자와 중성자의 반경을 10 픽셀로 설정합니다. 그 후, 우리는 <code> nucleusarray alignment를 반복하고 각 원을 다른 그라데이션으로 교대로 채 웁니다.

var rects = [];<br><br>var elemWidth = document.querySelector("#draw-shapes").offsetWidth;<br><br>for (i = 0; i   rects[i] = two.makeRectangle(<br>    Math.floor(Math.random() * elemWidth * 2),<br>    Math.floor(Math.random() * 420 * 2),<br>    10 + Math.floor(Math.random() * 100),<br>    10 + Math.floor(Math.random() * 100)<br>  );<br>}<br><br>var group = two.makeGroup(...rects);<br><br>group.noFill();<br>group.stroke = "black";<br>group.linewidth = 6;<br><br>two.update();<br>
핵 내부에 중성자와 양성자를 배치하는 것은 쉬웠습니다. 그러나 전자를 균일 한 거리에 올바르게 배치하려면 약간의 수학이 필요합니다. 우리는

변수를 사용하여 핵에서 다른 전자 쉘의 거리를 지정합니다. 전체 원은 2 개의 PI 라디안과 같은 각도를 덮습니다. 우리는 2 개의 pi 라디안을 동일하게 분산시켜 다른 전자를 균일하게 배치 할 수 있습니다. shellRadius 및 기능은 각도를 기반으로 다른 전자의 위치 벡터의 수직 및 수평 구성 요소를 분리하는 데 사용됩니다.

Math.cos() 코드 의이 부분은 다른 쉘에서 전자를 두드리게합니다. 또한 특정 궤도의 모든 전자에 대한 충전 색상을 한 번에 설정합니다. Math.sin() 코드 의이 부분은 개별 전자와 양성자의 불투명도를 0으로 설정합니다. 또한 2.js에 전자와 양성자를 특정 속도로 회전하도록 지시합니다.

var centerX = window.innerWidth / 2;<br>var centerY = window.innerHeight / 2;<br><br>var elem = document.getElementById("atoms");<br><br>var elementNames = [<br>  "",<br>  "Hydrogen",<br>  "Helium",<br>  "Lithium",<br>  "Beryllium",<br>  "Boron",<br>  "Carbon",<br>  "Nitrogen",<br>  "Oxygen",<br>  "Fluorine",<br>  "Neon"<br>];<br><br>var styles = {<br>  alignment: "center",<br>  size: 36,<br>  family: "Lato"<br>};<br><br>var nucleusCount = 10;<br>var nucleusArray = Array();<br><br>var electronCount = 10;<br>var electronArray = Array();<br><br>function intRange(min, max) {<br>  return Math.random() * (max - min) + min;<br>}<br>
코드의 마지막 부분을 통해 마우스를 클릭하거나 탭핑하여 요소를 반복 할 수 있습니다. 다음 요소를로드하기 위해, 우리는 하나 이상의 전자와 하나의 양성자 또는 중성자를 보이고 요소 이름을 업데이트합니다. 마지막 요소를 클릭 한 후 모든 입자가 다시 숨겨져 다시 시작할 수 있습니다. 변수는 현재 보이는 원자 입자의 수를 추적하여 우리가 그에 따라 보여 주거나 숨길 수 있도록 다음과 같이 숨길 수 있습니다. 다음 코드 페펜 데모를 클릭하거나 탭핑하려면 주기성 테이블의 첫 10 가지 요소를보십시오.

var two = new Two({ fullscreen: true }).appendTo(elem);

var protonColor = two.makeRadialGradient(
0,
0,
15,
new Two.Stop(0, "red", 1),
new Two.Stop(1, "black", 1)
);

var neutronColor = two.makeRadialGradient(
0,
0,
15,
new Two.Stop(0, "blue", 1),
new Two.Stop(1, "black", 1)
);

for (i = 0; i nucleusArray.push(two.makeCircle(intRange(-10, 10), intRange(-10, 10), 8));
}

nucleusArray.forEach(function(nucleus, index) {
if (index % 2 == 0) {
nucleus.fill = protonColor;
}
if (index % 2 == 1) {
nucleus.fill = neutronColor;
}
nucleus.noStroke();
});
Final Thought

for (var i = 0; i   if (i     var shellRadius = 50;<br>    var angle = i * Math.PI;<br>    electronArray.push(<br>      two.makeCircle(<br>        Math.cos(angle) * shellRadius,<br>        Math.sin(angle) * shellRadius,<br>        5<br>      )<br>    );<br>  }<br>  if (i >= 2 && i     var shellRadius = 80;<br>    var angle = (i - 2) * Math.PI / 4;<br>    electronArray.push(<br>      two.makeCircle(<br>        Math.cos(angle) * shellRadius,<br>        Math.sin(angle) * shellRadius,<br>        5<br>      )<br>    );<br>  }<br>}<br>
2.js 라이브러리 및 사각형, 원 및 타원과 같은 모양을 그리는 데 사용되는 방법. 그 후, 우리는 어떻게 다른 객체를 그룹화하여 한 번에 그들을 조작 할 수 있는지 논의했습니다. 우리는이 기능을 사용하여 요소를 그룹화하여 동기화로 변환하고 회전했습니다. 이 도구는 모두주기 테이블에서 처음 10 개 요소의 원자 애니메이션에서 함께 모였습니다.

볼 수 있듯이 애니메이션 2D 그래픽을 만드는 것은 Two.js를 사용하여 매우 쉽습니다. 이 게시물의 초점은 신속하게 시작하는 데 도움이되었으므로 기본 만 다루었습니다. 그러나 라이브러리에 대한 자세한 내용을 알아 보려면 공식 문서를 읽어야합니다!

위 내용은 2D 그래픽을 그리는 초보자 가이드 2. JS의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
애니메이션 파비콘 제작애니메이션 파비콘 제작Apr 18, 2025 am 10:35 AM

탭을 전환 할 때 눈이 가장 먼저 찾는 것입니다.

Netlify-Hosted 사이트와 함께 도메인 사용Netlify-Hosted 사이트와 함께 도메인 사용Apr 18, 2025 am 10:34 AM

NetLify에는 사용자 정의 도메인에 대한 자체 문서가 있으므로이 물건에 대한 말의 입술 기술 문서를 찾고 있다면

의사 코드의사 코드Apr 18, 2025 am 10:33 AM

Yonatan Doron은 얼마 전 "코드의 예술 - 더 많은 의사 코드를 작성 해야하는 이유"라는 매체에 게시물을 썼습니다. 의사 코드의 팬으로서 그 제목을 좋아하십시오

Marie Kondo 조직 치료에 대해 grunt 작업을 제공하자Marie Kondo 조직 치료에 대해 grunt 작업을 제공하자Apr 18, 2025 am 10:31 AM

우리는 웹 팩과 NPM 스크립트 시대에 살고 있습니다. 좋든 나쁘 든 그들은 롤업, JSPM 및 Gulp의 비트와 함께 번들링 및 작업 실행의 리드를 차지했습니다. 하지만

큰 분열에서 분기큰 분열에서 분기Apr 18, 2025 am 10:27 AM

나는 프론트 엔드 개발자라는 용어를 좋아합니다. 우려 사항이있는 경우 작업의 본질을 캡슐화합니다.

웹 사이트를 시작하는 초보자의 여정웹 사이트를 시작하는 초보자의 여정Apr 18, 2025 am 10:20 AM

2018 년 9 월, 나는 웹 개발을 배우는 데 몇 달 밖에 걸리지 않았습니다. 많은 새로운 개발자들의 경우에 나는 확실히 큰 일이었습니다.

모든 새로운 ES2019 팁과 요령모든 새로운 ES2019 팁과 요령Apr 18, 2025 am 10:19 AM

ECMAScript 표준은 ES2019의 새로운 기능을 추가하여 다시 업데이트되었습니다. 이제 Node, Chrome, Firefox 및 Safari에서 공식적으로 제공됩니다

코일로 사이트 수익 창출 (및 지지자를위한 광고 제거)코일로 사이트 수익 창출 (및 지지자를위한 광고 제거)Apr 18, 2025 am 10:13 AM

나는 과거에 "소액 결제 팁"을 기반으로 소수의 웹 사이트를 시도했습니다. 그들은왔다 갔다. 괜찮습니다. 출판사 관점에서, 그것은

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구