이 글에서는 주로 캔버스에서의 고차 베지어 곡선(N-차 베지어 곡선 생성기) 구현을 소개합니다. 편집자는 이것이 꽤 좋다고 생각합니다. 이제 여러분과 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
먼저 작성하세요
네이티브 캔버스는 3차 베지어 곡선까지만 지원하는데, 제어점을 여러 개 추가하려면 어떻게 해야 하나요? (가장 복잡한 곡선도 3차 베지어를 사용하여 시뮬레이션할 수 있습니다.) 동시에 베지어 제어점의 위치를 매우 직관적으로 명확하게 이해하고 곡선을 형성하기 위해 제어점을 얼마나 설정해야 하는지를 명확하게 이해하기 어렵습니다. 원하다. . 위의 두 가지 문제점을 해결하기 위해 커뮤니티에 N레벨 솔루션(js 버전)이 없는 것 같아서, 이번에는 저자가 오픈소스 bezierMaker.js에 대해 매우 진지하게 생각하고 있습니다!
bezierMaker.js는 이론적으로 N차 베지어 곡선 생성을 지원하며 개발자가 제어점을 추가하고 드래그하여 궁극적으로 일련의 그리기 애니메이션을 생성할 수 있는 테스트 기반도 제공합니다. 개발자가 다양한 위치의 제어점에 해당하는 다양한 생성 곡선을 아는 것은 매우 직관적입니다.
이 작품이 마음에 드셨다면 스타에 오신 것을 환영합니다. 결국 스타는 힘들게 얻은 것입니다. .
프로젝트 주소: 여기✨✨✨
테스트 사이트가 왜 필요한가요?
복잡한 고차 베지어 곡선을 그릴 때 필요한 곡선의 제어점의 정확한 위치를 알 수 없습니다. 테스트 필드에서 시뮬레이션하면 제어점의 좌표 값을 실시간으로 얻을 수 있습니다. 획득한 점 좌표를 객체 배열로 변환하고 BezierMaker 클래스에 전달하여 대상 곡선을 생성할 수 있습니다. [x] 테스트 필드에 제어점을 원하는 만큼 추가할 수 있습니다
[x] 테스트 필드는 곡선 그리기 애니메이션 표시를 지원합니다
[x] 제어점을 자유롭게 끌 수 있습니다
[ x ] 베지어 곡선 형성 프로세스의 접선 표시 지원
- [x] 차수 3 이하의 베지어 곡선 그리기는 기본 API를 채택합니다
도입
-
<script src="./bezierMaker.js"></script>
- raw
/** * canvas canvas的dom对象 * bezierCtrlNodesArr 控制点数组,包含x,y坐标 * color 曲线颜色 */ var canvas = document.getElementById('canvas') //3阶之前采用原生方法实现 var arr0 = [{x:70,y:25},{x:24,y:51}] var arr1 = [{x:233,y:225},{x:170,y:279},{x:240,y:51}] var arr2 = [{x:23,y:225},{x:70,y:79},{x:40,y:51},{x:300, y:44}] var arr3 = [{x:333,y:15},{x:70,y:79},{x:40,y:551},{x:170,y:279},{x:17,y:239}] var arr4 = [{x:53,y:85},{x:170,y:279},{x:240,y:551},{x:70,y:79},{x:40,y:551},{x:170,y:279}] var bezier0 = new BezierMaker(canvas, arr0, 'black') var bezier1 = new BezierMaker(canvas, arr1, 'red') var bezier2 = new BezierMaker(canvas, arr2, 'blue') var bezier3 = new BezierMaker(canvas, arr3, 'yellow') var bezier4 = new BezierMaker(canvas, arr4, 'green') bezier0.drawBezier() bezier1.drawBezier() bezier2.drawBezier() bezier3.drawBezier() bezier4.drawBezier()
제어점이 3개 미만인 경우 기본 API 인터페이스가 적용됩니다. 제어점이 2개 이상일 경우 구현한 기능을 사용하여 점을 그립니다.
핵심 원리
베지어 곡선 그리기베지어 곡선 그리기의 핵심은 베지어 공식의 적용에 있습니다.이 공식에서 P0-Pn은 시작점에서 다양한 지점까지의 거리를 나타냅니다. 각 제어점에서 끝점의 각 지점까지의 전력 연산과 비율 t.
BezierMaker.prototype.bezier = function(t) { //贝塞尔公式调用 var x = 0, y = 0, bezierCtrlNodesArr = this.bezierCtrlNodesArr, //控制点数组 n = bezierCtrlNodesArr.length - 1, self = this bezierCtrlNodesArr.forEach(function(item, index) { if(!index) { x += item.x * Math.pow(( 1 - t ), n - index) * Math.pow(t, index) y += item.y * Math.pow(( 1 - t ), n - index) * Math.pow(t, index) } else { //factorial为阶乘函数 x += self.factorial(n) / self.factorial(index) / self.factorial(n - index) * item.x * Math.pow(( 1 - t ), n - index) * Math.pow(t, index) y += self.factorial(n) / self.factorial(index) / self.factorial(n - index) * item.y * Math.pow(( 1 - t ), n - index) * Math.pow(t, index) } }) return { x: x, y: y } }모든 점을 탐색하고 현재 비율 t(0저자는 이후 기사에서 베셀 공식의 파생에 대해 구체적으로 설명할 것입니다. 이제 실제 베지어 곡선이 1000개의 점으로 나누어지고 각각 직선으로 연결된다는 것을 베셀 공식을 사용한다는 것만 알면 됩니다. 포인트, 클래스 곡선을 시뮬레이션할 수 있습니다. 시뮬레이션 분야 베지어 곡선 생성 애니메이션 구현을 위해
관련 코드의 이 부분은 여기에서 참조할 수 있습니다
전체 아이디어는 제어점의 각 레이어를 1차 베셀 함수로 처리하는 재귀적 방법을 사용하는 것입니다. 다음 레이어 제어점과 해당 연결을 계산합니다. 저자는 테스트 사이트의 애니메이션 생성 원리를 정리하기 위해 베지어 곡선 수식 원리에 대한 심층 설명까지 구체적인 논리를 남겨두겠습니다~
관련 권장 사항:
베지에 curve 자세한 응용 설명
캔버스 베지어 곡선 효과 구현을 위한 코드 데모
위 내용은 캔버스는 고차 베지어 곡선을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

HTML 태그 및 속성의 사용 방법에는 다음이 포함됩니다. 1. 기본 사용 : SRC 및 HREF와 같은 속성을 통해 필요한 정보를 사용하고 필요한 정보를 추가합니다. 2. 고급 사용 : 데이터-* 사용자 정의 속성을 사용하여 복잡한 상호 작용을 달성합니다. 3. 일반적인 실수를 피하십시오 : 속성 값이 인용문으로 둘러싸여 있는지 확인하십시오. 4. 성능 최적화 : 간단하게 유지하고 표준 속성 및 CSS 클래스 이름을 사용하여 이미지에 Alt 속성이 있는지 확인하십시오. 이것들을 마스터하면 웹 개발 기술이 향상됩니다.

htmltagsdefinestructureofawebpage, whiletributesdfunctionalityanddetails.1) tags, andoutlinethecontent'splacement.2) agtributessuchassrc, class 및 styleenhancetagsbysingingimages ources, styling, and mormore, mormor, 개선.

HTML의 미래는보다 의미적이고 기능적이며 모듈 식 방향으로 발전 할 것입니다. 1) 의미화로 인해 태그가 콘텐츠를보다 명확하게 설명하여 SEO 및 장벽없는 액세스를 향상시킵니다. 2) 기능화는 사용자의 요구를 충족시키기 위해 새로운 요소와 속성을 소개합니다. 3) 모듈화는 구성 요소 개발을 지원하고 코드 재사용 성을 향상시킵니다.

htmlattributesarecrucialinwebdevelopmentforcontrollingbehavior, 외관 및 기능. 접근성, 접근성, andseo.forexample, thesrcattributeintagspactsseo, whike whike whike whike whike whike thercattributeintagspactsseo

ALT 속성은 HTML에서 태그의 중요한 부분이며 이미지에 대한 대체 텍스트를 제공하는 데 사용됩니다. 1. 이미지를로드 할 수 없으면 ALT 속성의 텍스트가 표시되어 사용자 경험을 향상시킵니다. 2. 스크린 리더는 ALT 속성을 사용하여 시각 장애가있는 사용자가 그림의 내용을 이해하도록 도와줍니다. 3. 검색 엔진 인덱스 텍스트 텍스트는 웹 페이지의 SEO 순위를 향상시키기 위해 ALT 속성의 텍스트를 색인 텍스트입니다.

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. 1. HTML은 웹 페이지 구조를 구축하는 데 사용됩니다. 2. CSS는 웹 페이지의 모양을 아름답게하는 데 사용됩니다. 3. JavaScript는 동적 상호 작용을 달성하는 데 사용됩니다. 태그, 스타일 및 스크립트를 통해이 세 가지는 함께 현대 웹 페이지의 핵심 기능을 구축합니다.

태그의 Lang 속성을 설정하는 것은 웹 접근성 및 SEO를 최적화하는 핵심 단계입니다. 1) 태그에 LANG 속성을 설정하십시오. 2) 다국어 컨텐츠에서는 다른 언어 부품에 대한 LANG 속성을 설정하십시오. 3) "en", "fr", "zh"와 같은 ISO639-1 표준을 준수하는 언어 코드를 사용하여 LANG 속성을 올바르게 설정하면 웹 페이지 및 검색 엔진 순위의 접근성을 향상시킬 수 있습니다.

htmlattributesearsentialforenhancingwebelements'functionalityandAmpearance.theyaddinformationTodeFineBehavior, 외관 및 간호, WebsITESITERACTIVE, RAPITIVE 및 VVESILLY -CAMENTION.ATTRIBUTESLIKESRC, HREF, 클래스, 유형 및 디스티브 트랜스포트


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

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

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)