본문 바로 가기

학습 Q&A

강의 내용 궁금증! 교수님이 직접 답변 드립니다.

  • 홈
  • 교수소개
  • 공학계열
  • 권준표 교수님
  • 학습 Q&A

Q&A 메뉴.png

※ 유의사항
강의에 나오지 않는 내용에 대한 풀이나 해설은 답변을 드릴 수가 없습니다.
학습과 무관한 내용 및 비방/욕설 등 게시판 성격과 무관한 내용은 사전 고지없이 삭제됩니다.
답변 완료된 게시글은 수정 및 삭제 불가합니다.

kwonjunpyo_03.png

게시판 글보기
제목 답변완료 MATLAB_ADVANCED_1_15강 질문
질문유형 강좌내용 교수님 권준표
과목 매트랩 강좌명
작성자 이*민 (k*****m) 등록일 2021-10-14 22:11

안녕하세요

이번에 MATLAB_ADVANCED_1_15강을 수강하는 도중에 질문이 생겨서 글 올립니다.

 

강의중 한가지 색만을 표현하는 flat방식과 다른 방식으로 여러 색을 조각면에 표현하는 방식을 배우는 과정(p475)에서

---------------------------------------------------------------------------------------------------

clear, clc ,close all


peaks(20) 

axis off

h = findobj(`Type`,`surface`);

set(h,`facecolor`,[0.5 0.5 0.5],`EdgeColor`,[0.5 0.5 0.5])


x= [3 -3 3];

y= [-3 3 -3];

z= [8 8 8];


cols = [ 1 1 1; 1 1 0; 0 1 0];


for i = length(x)

    light(`pos`,[x(i), y(i), z(i)],`color`,cols(i,:))

    

end

-----------------------------------------------------------------------------------------------------

for문이 이해가 되지 않습니다.

 

이전에는 예를들어 for i = 0:10과 같은 `실행하는 범위`를 입력하여 

그 범위내에서 순차적으로 시행되는 형식으로 활용 하였는데

 

이번에는 i를 벡터x의 가장 큰 배열 차원의 길이인 3으로 지정한 상태로 돌리는 과정에, i가 1,2,3순서로 진행되는 것인지 궁금해서

다음과 같이 작성 해 보니

----------------------------------------------------------------------------------------------------

clear, clc ,close all


peaks(20) %mesh가 20개로 됨

axis off

h = findobj(`Type`,`surface`);

set(h,`facecolor`,[0.5 0.5 0.5],`EdgeColor`,[0.5 0.5 0.5])


x= [3 -3 3];

y= [-3 3 -3];

z= [8 8 8];


cols = [ 1 1 1; 1 1 0; 0 1 0];

 

light(`pos`,[x(3), y(3), z(3)],`color`,cols(3,:))

------------------------------------------------------------------------------------------------------

for 문의 형식에서 i가 3일때 값들만 light형식에 같은 형식으로 넣어봤더니 

맨 위에 작성했던 결과와 같은 색의 그래프가 나왔습니다.

 

 

for i = length(x)에서 

i = 3일때만 출력이 되는것인지 궁금합니다.(i=1,i=2일때의 색들의 겹쳐지지 않는지)

그렇다면 

length(x)대신에 3을 넣었어도 되는 것인지도 궁금합니다.

 

 

#권준표 #매트랩 #for문 #매트랩질문 

 

 

답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.

댓글
0
이*민

for i=1:length(x)

인데 1부터라는 말을 안 쓰셔서 green color만 나온 것입니다.

cols = [1 1 1; 1 1 0; 0 1 0];
을 차례대로 반영해주기 위해서는
for문에서 i값을 1부터 차례대로 넣어줘야 하고
그러면 위와 같은 그림으로 잘 나올 겁니다.

Screen-Shot-2021-10-20-at-6.08.22-PM.png 

  • 2021-10-21
  • 2024-12-12 수정