찾다
웹 프론트엔드H5 튜토리얼HTML5 고급 프로그래밍 그래픽 왜곡과 그 응용 3(확장)

이 글은 이 시리즈의 세 번째 글입니다. 처음 두 글에서는 HTML5에서 이미지 왜곡 효과를 얻는 원리와 drawtriangles 기능의 자세한 사용법을 소개합니다.

drawtriangles 기능의 확장을 살펴보겠습니다. drawtriangles 기능을 사용하여 회전하는 3D 지구를 구현하면 효과는 다음과 같습니다


lufylegend 버전 1.5.0의 drawtriangles 기능에 버그가 있어서 조용히 lufylegend 버전 1.5.1을 업데이트했습니다. 아래 공식 홈페이지에서 다운로드 받으실 수 있습니다. 주소:

http: //lufylegend.com/lufylegend

실제로 3D 구형 효과를 그리려면 먼저 평면을 그린 다음 평면을 작은 삼각형으로 나눈 다음 이를 사용합니다.

이제 먼저 빈 LBitmapData 개체를 만든 다음 이 개체를 N개의 작은 삼각형으로 나눕니다.

earthBitmapData = new LBitmapData("#ffffff", 0, 0, 500, 300);
var i, j;
vertices = new Array();
for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		vertices.push(i*15,j*15);
	}
}
indices = new Array();
for (i = 0; i < cols; i++) {
	for (j = 0; j < rows; j++) {
		indices.push(i * (rows + 1) + j, (i + 1) * (rows + 1) + j, i * (rows + 1) + j + 1);
		indices.push((i + 1) * (rows + 1) + j, i * (rows + 1) + j + 1, (i + 1) * (rows + 1) + j + 1);
	}
}
uvtData = new Array();
for (i = 0; i <= cols; i++) {
	for (j = 0; j <= rows; j++) {
		uvtData.push(i / cols, j / rows);
	}
}

그런 다음 drawtriangles 함수를 사용하여 LBitmapData 개체를 그립니다.

backLayer = new LSprite();
addChild(backLayer);
backLayer.graphics.clear();
backLayer.graphics.beginBitmapFill(earthBitmapData);
backLayer.graphics.drawTriangles(vertices, indices, uvtData, 2);

화면으로 이동하여 아래와 같은 효과를 얻습니다.


이 평면을 원으로 프로그래밍하려면 먼저 그림에 있는 각 작은 삼각형의 좌표를 계산해야 합니다. 좌표를 계산해야 합니다. 아래 그림은 공의 수직 단면입니다.


삼각 함수를 사용하여 그림의 y 좌표와 공의 수평 단면을 계산합니다. y 좌표 위치의 공. 원의 반경 r1

var a = Math.sin(angle);
if((90-180*j/rows)%90==0 && (90-180*j/rows)%180!=0)a=(90-180*j/rows)>0?1:-1;
var y =  -r*a;
var sa = Math.cos(angle);
var r1 =  Math.abs(r*sa);

그러므로 먼저 계산된 y 좌표를 정점 배열로 가져옵니다

for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		var angle = (90-180*j/rows)*Math.PI/180;
		var a = Math.sin(angle);
		if((90-180*j/rows)%90==0 && (90-180*j/rows)%180!=0)a=(90-180*j/rows)>0?1:-1;
		if((90-180*j/rows)%180==0)a=0;
		var sy =  -r*a;
		vertices.push(i*15,sy);
	}
}

x 좌표가 계산되지 않았기 때문입니다. 그러나 다음과 같이 특별한 수치가 얻어집니다


다음으로 x의 좌표가 어떻게 계산되는지 살펴보겠습니다. 먼저 반경이 r1인 평면 단면을 꺼냅니다. , 아래와 같이


삼각함수를 이용하여 그래프의 x좌표를 계산합니다

var b = Math.cos(angle*Math.PI/180);
var x =  r1*b;

이때 계산된 값만 가져오면 x 좌표를 정점 배열에 추가

for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		var sa = Math.cos(angle);
		if((90-180*j/rows)%180==0)sa=1;
		var sr =  Math.abs(r*sa);
		var angle2 = 360*(i+1)/cols;
		var b = Math.cos(angle2*Math.PI/180);
		if(angle2%360==0)b=1;
		else if(angle2%180==0)b=-1;
		var sx =  sr*b;
		vertices.push(sx,j*15);
	}
}

y 좌표는 계산되지 않으므로 다음과 같이 매우 흥미로운 그래프를 얻을 수 있습니다.


계산된 x 좌표와 y 좌표는 동시에 정점 배열로 가져옵니다.

for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		var angle = (90-180*j/rows)*Math.PI/180;
		var a = Math.sin(angle);
		if((90-180*j/rows)%90==0 && (90-180*j/rows)%180!=0)a=(90-180*j/rows)>0?1:-1;
		if((90-180*j/rows)%180==0)a=0;
		var sy =  -r*a;
		var sa = Math.cos(angle);
		if((90-180*j/rows)%180==0)sa=1;
		var sr =  Math.abs(r*sa);
		var angle2 = 360*(i+1)/cols;
		var b = Math.cos(angle2*Math.PI/180);
		if(angle2%360==0)b=1;
		else if(angle2%180==0)b=-1;
		var sx =  sr*b;
		vertices.push(sx, sy);
	}
}

인 경우 다음과 같이 완전한 구형 그래픽을 얻을 수 있습니다


다음 단계는 간단합니다. 빈 그림을 지구의 평면도로 바꾸세요. 코드는 다음과 같습니다

earthBitmapData = new LBitmapData(imglist["earth"]);

코드를 다시 실행하면 다음과 같은 3D 그래픽을 얻을 수 있습니다


이제 지구를 회전시킬 차례입니다. 이전 기사에서 언급했듯이 drawtriangles 함수에 전달된 uvtData 배열의 요소는 각 작은 항목의 상대적 위치입니다. 원본 그림의 삼각형은 그림을 그리는 시작 위치를 결정합니다. 0123과 같은 위치 집합이 변경되면 위치는 1230이 되고 계속해서 2301로 변환됩니다. 그런 다음 코드에서는 분할된 배열을 각 열에 따라 이동하기만 하면 됩니다. 매번 첫 번째 열의 두 세트의 삼각형을 마지막 열로 이동하면 됩니다. 두 번째 열의 삼각형 세트가 첫 번째 열이 되므로 지속적인 변형으로 인해 지구가 회전할 수 있습니다

for (i = 0; i <= rows; i++) {
	uvtData.push(uvtData.shift());
	uvtData.push(uvtData.shift());
}

원하는 경우 지구의 크기를 변경하는 것이 LSprite의 scaleX 및 scaleY 속성을 변경하는 것이 더 간단합니다. 개체의 크기를 변경할 수 있습니다.

http:/ /lufy.netne.net/lufylegend-js/3dearth/index.html


주의사항:

다시 한번 말씀드리지만, 본 글에서 소개하는 내용은 HTML5 오픈소스 버전 1.5.1 이상의 지원이 필요합니다. lufylegend 버전 1.5.1의 출시 주소는 다음과 같습니다


http://lufylegend.com /lufylegend

위는 HTML5 Advanced Program Graphic Distortion의 내용입니다. 및 응용프로그램 III(확장)에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!



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

html5hassignificallytransformedwebdevelopmentbyintranticalticlementements, 향상 Multimediasupport 및 Improvingperformance.1) itmadewebsitessmoreaccessibleadseo 친환경적 인 요소, 및 .2) Html5intagnatee

H5 코드 : 접근성 및 시맨틱 HTMLH5 코드 : 접근성 및 시맨틱 HTMLApr 09, 2025 am 12:05 AM

H5는 시맨틱 요소 및 ARIA 속성을 통해 웹 페이지 접근성 및 SEO 효과를 향상시킵니다. 1. 컨텐츠 구조를 구성하고 SEO를 개선하기 위해 사용합니다. 2. Aria-Label과 같은 ARIA 속성은 접근성을 향상시키고 보조 기술 사용자는 웹 페이지를 원활하게 사용할 수 있습니다.

H5는 html5와 동일합니까?H5는 html5와 동일합니까?Apr 08, 2025 am 12:16 AM

"H5"와 "HTML5"는 대부분의 경우 동일하지만 특정 시나리오에서는 다른 의미를 가질 수 있습니다. "HTML5"는 새로운 태그와 API를 포함하는 W3C 정의 표준입니다. "H5"는 일반적으로 HTML5의 약어이지만 모바일 개발에서는 HTML5를 기반으로 한 프레임 워크를 참조 할 수 있습니다. 이러한 차이를 이해하면 프로젝트 에서이 용어를 정확하게 사용하는 데 도움이됩니다.

H5의 기능은 무엇입니까?H5의 기능은 무엇입니까?Apr 07, 2025 am 12:10 AM

H5 또는 HTML5는 HTML의 다섯 번째 버전입니다. 개발자에게 더 강력한 도구 세트를 제공하여 복잡한 웹 애플리케이션을보다 쉽게 ​​만들 수 있습니다. H5의 핵심 기능에는 다음이 포함됩니다. 1) 웹 페이지에 그래픽 및 애니메이션을 그리는 요소; 2) 웹 페이지 구조를 SEO 최적화에 명확하고 도움이되는 시맨틱 태그 등; 3) GeolocationApi 지원 위치 기반 서비스와 같은 새로운 API; 4) 호환성 테스트 및 폴리 필 라이브러리를 통해 크로스 브라우저 호환성을 보장해야합니다.

H5 링크를 수행하는 방법H5 링크를 수행하는 방법Apr 06, 2025 pm 12:39 PM

H5 링크를 만드는 방법? 링크 대상 결정 : H5 페이지 또는 응용 프로그램의 URL을 가져옵니다. HTML 앵커 작성 : & lt; a & gt; 태그 앵커를 만들고 링크 대상 URL을 지정합니다. 링크 속성 설정 (선택 사항) : 필요에 따라 대상, 제목 및 on 클릭 속성을 설정하십시오. 웹 페이지에 추가 : 링크가 나타나려는 웹 페이지에 HTML 앵커 코드를 추가하십시오.

H5 호환성 문제를 해결하는 방법H5 호환성 문제를 해결하는 방법Apr 06, 2025 pm 12:36 PM

H5 호환성 문제에 대한 솔루션에는 다음이 포함됩니다. 웹 페이지가 화면 크기에 따라 레이아웃을 조정할 수있는 반응 형 디자인을 사용합니다. 릴리스 전에 호환성을 테스트하기 위해 브라우저 크로스 브라우저 테스트 도구를 사용하십시오. PolyFill을 사용하여 이전 브라우저의 새로운 API를 지원합니다. 웹 표준을 따르고 효과적인 코드 및 모범 사례를 사용하십시오. CSS 프리 프로세서를 사용하여 CSS 코드를 단순화하고 가독성을 향상시킵니다. 이미지를 최적화하고 웹 페이지 크기를 줄이며로드 속도를 높이십시오. HTTPS를 통해 웹 사이트의 보안을 보장하십시오.

H5와 링크를 생성하는 방법H5와 링크를 생성하는 방법Apr 06, 2025 pm 12:33 PM

H5 페이지는 링크를 수동으로 만들거나 짧은 링크 서비스를 사용하는 두 가지 방식으로 링크를 생성 할 수 있습니다. 수동으로 생성하면 H5 페이지의 URL을 복사하면됩니다. 짧은 링크 서비스를 통해 URL을 서비스에 붙여 넣은 다음 단축 된 URL을 가져와야합니다.

H5 공유 페이지를 수행하는 방법H5 공유 페이지를 수행하는 방법Apr 06, 2025 pm 12:30 PM

참여를 높이고 리드를 생성하며 브랜드 인지도를 높이기 위해 매력적인 H5 공유 페이지를 만드는 것이 중요합니다. 단계에는 대상 고객 식별, 매력적인 비주얼 설계, 매력적인 컨텐츠 작성, 대화 형 요소 추가, 소셜 미디어 공유 최적화, 테스트 및 개선이 포함됩니다.

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를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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