'연립방정식'에 해당되는 글 1건

  1. 2011/01/24 Hybrid 컴퓨터 속의 수학과 물리 - 조명 감쇠(Attenuation) 공식 만들기 (2)

감쇠(Attenuation)

컴퓨터 그래픽에서 조명에 대한 감쇠는 자주 사용된다.

이론적으로는 조명의 감쇠는 거리의 제곱의 반비례가 맞다. 이유는 수학적으로 증명할 수 있지만 생략한다. 하지만 감쇠가 없는 경우도 있고 거리의 반비례도 사용된다. 이는 실제 세상을 의도적으로 변형하거나, 원하는 효과를 위해 가상 혹은 근사적인 방법을 사용한다고 보면 된다.

예를 들면 아파트 1층에서 햇볕을 쬐는 것과 11층에서 쬐는 것은 얼마의 차이가 있을까 생각해보자. 1층의 높이를 편의상 3미터라고 가정했을 때, 10층의 차이에 대해 30미터가 LaTeX equation 로 차이가 생긴다고 생각한다면 당연히 틀린 생각이다. 중요한건 태양으로부터의 거리다. 태양으로부터의 거리를 L이라고 하면 LaTeX equationLaTeX equation는 거의 차이가 없다. 따라서 이 경우 감쇠 효과를 적용하지 않는게 좋다.

어쨌거나 저쨌거나, 기본적으로 감쇠 공식은 다음과 같다.

  • LaTeX equation

여기서 x는 거리다. a, b, c 는 상수. 일반적으로 a는 0이 아닌 숫자를 둔다(a가 0이라면, x가 0인 부분에서 조명의 효과가 무한대가 된다). 한번 그래프를 뽑아보자. a = b = c = 1 이라고 두면 다음과 같은 그래프를 확인할 수 있다.


그림 1. LaTeX equation 의 그래프

조명이 위치한 지점(x=0)에서는 감쇠가 없어서 밝기가 1이고, 거리가 멀어질 수록 급격하게 감쇠가 커져 조명의 밝기가 작아지는 것을 확인할 수 있다.

여기서 해볼 것은 원하는 조건(3가지)을 만들고, 그 조건에 해당하는 그래프를 만드는 것이다. 결론부터 말하자면, 생각만큼 그렇게 쉽게 만들어지진 않는다(그 이야기는 나중에 다시).

보통은 감쇠효과를 위해 a, b, c 셋 중에 하나만 써서 사용해도 무리가 없다. 하지만 다음과 같은 경우가 필요할 수 있다.

  1. 적당히 가까이 있을 땐 밝다가
  2. 좀 거리가 있으면 거의 영향이 없는 조명

다시 한번 말하지만 잘 안만들어진다. -_-ㅋ

감쇠 만들기 예

가장 간단한 예를 한번 만들어 보도록 하겠다. 요구 조건을 3가지 정의해야한다(이 요구 조건의 '전제 조건'도 있는데, 아래에서 자세히 설명하겠다).

  1. 거리가 20이상 이되면 매우 작아야함.
  2. 거리가 10일 경우 밝기는 1에 가깝도록 밝아야함.
  3. 거리가 0일 경우 밝기는 1.

이 정도면 약간은 구체화 되었다. 좀 더 깐깐하게 만들어보자(x는 거리, y는 밝기)

  1. LaTeX equation
  2. LaTeX equation
  3. LaTeX equation

이러면 이 세가지 조건으로 중고등학교때 열심히(괴롭게, 짜증나게) 풀었던 연립 방정식이 만들어진다.

LaTeX equation
LaTeX equation

이 공식에 위의 규칙을 넣는다.

LaTeX equation
LaTeX equation
LaTeX equation

시작부터 a는 나왔다. 나머지 b, c도 쉽게 풀 수 있긴 한데, 21세기에 머리 쓸 필요 있나?(물론 있다. 어려운게 아니니 풀 줄 알면 좋다) 컴퓨터를 이용하자.

예전엔 매틀랩(Matlab)등을 이용해서 풀었는데, 세상 참 좋아졌다. Wolfram Alpha를 이용하여 웹으로 바로 해결할 수 있다(Wolfram Alpha는 아이폰, 아이패드용도 있다. 매우 매우 좋다).

선형대수학을 배운 사람이라면(사실 고등학교 수학에도 나오는 걸로 기억한다) 위와 같은 연립 방정식은 행렬을 이용해서 풀 수 있다. 등호(=)왼쪽은 행렬 A와 벡터 w로 이루어져있고 오른족은 벡터 b 라고 하면, Aw=b의 공식이 나오며, 이는 LaTeX equation의 공식을 이용하여 풀 수 있다. 즉, 역행렬만 구하면 됨.

기본적으로 행렬 A는 다음과 같이 된다.

LaTeX equation
LaTeX equation
LaTeX equation

Wolfram Alpha에 접속하면 수식을 넣어서 계산할 수 있는데,

inv {{1, 20, 400}, {1, 10, 100}, {1, 0, 0}}

이건 역행렬을 구하는 것이고, 여기에 벡터 b를 곱하는건 다음과 같이 적으면 된다.

이러면 결과는 LaTeX equation 라고 나온다. 이게 a, b, c에 해당한다.

그래프를 그려보자. 그래프는 x는 0에서 20, y는 0에서 1.2로 그려본다.

Wolfram Alpha에 다음과 같이 입력하면 그래프가 만들어진다.


그림 2. LaTeX equation 의 그래프

특징을 살펴보면 이렇다.

  1. 5정도에서 1이 상의 최고점을 찍고 내려와서
  2. 10에서 0.7의 값을 갖고,
  3. 20에서 0.2의 값을 갖는다.

굉장히 맘에 안들 수도 있다. 하지만 이 조건을 아무렇게나 넣는다고 원하는 그래프가 나오진 않는다. 가령, x=10에서 0.9의 값을 갖고, y=20에서 0.1의 값을 갖는 가파른 곡선을 만들어 보고 싶어도, 이렇게 만들어 보면 특이점(Singularity)[1]도 생겨서 오히려 안좋은 모양을 갖는다.

제약 조건

먼저 행렬, 연립방정식, 역행렬이 들어간 것을 보면 바로 알 수 있듯이, 이때 만들어진 행렬은 역행렬을 갖아야 한다. 역행렬을 갖는 행렬은 다음의 조건을 갖는다.

  1. LaTeX equation 의 해는 하나 뿐이다.
  2. 선형 독립적이다(linearly independent).

사실 그래프를 그려보면 쉽다. 그래프를 만들 때 넣는 조건들(x=10일 때 y=0.7 이런 것들)을 점을 찍어봤을 때, 직선이 되면 안된다. 직선이 되면 선형 의존적(linearly dependent)이라고 말한다. 이 경우는 해가 여러개다. 즉, 만들 수 있는 방정식이 무한개가 되서 의미가 없다.

또 다른 제약 조건은 위에 설명했듯이 특이점이 있으면 안된다. 분모가 0이면, 즉 a + bx+cx^2가 0이면 감쇠가 무한대가 되어버린다. 사실 종종 x=0 일 때는 무한대가 되어도 상관 없다. 조명의 중앙에는 다른 물체가 들어올 수 없다고 가정할 수 있기 때문이다. 이 점은 상황에 맞게 생각하면 된다.

결론

몇가지 그래프를 더 만들어봤지만, 원하는 그래프를 만들긴 굉장히 어렵다. 근본적으로 이 그래프는 2차 곡선이기 때문이다. 그래프에 아에 각이 생기는 그래프는 무한대의 차수이고, 직선은 1차다. 3차, 4차 곡선이 되면 사실 원하는 그래프를 훨씬 더 쉽게 만들 수 있지만, 그렇게 높은 차원의 그래프를 사용하는 것은 조금 억지다(왜냐하면, 자연 현상 자체가 최대 2차이기 때문).

하지만 그렇다고 있는거 안써먹을 필요는 없다. 무리하게 그래프를 만들지 않는이상 적당히 부드러운 곡선을 만들고자 할 때는 한번쯤 계산해봐도 좋을 듯 하다.

또한 그래프를 그릴 때 방금처럼 (x, y) 좌표를 통하지 않고 기울기를 통해 방정식을 풀 수도 있다. 하지만 그렇게 크게 의미가 있어 보이지는 않는다(자세한 설명은 생략한다).

정리/요약

그래프를 만들기 위해 세 점을 찍어본다(단, 세 점을 잇는 선이 일직선이 되면 안됨).

  • (x1, y1), (x2, y2), (x3, y3)

행렬을 만들어서 Wolfram Alpha를 이용하여 해를 구한다.

  • inv {{1, x1, x1^2}, {1, x2, x2^2}, {1, x3, x3^2}}.{1/y1, 1/y2, 1/y3}

이때 나온 해를 a, b, c라고 했을 때 역시 Wolfram Alpha 에서 다음의 그래프를 그린다(범위는 원하는대로 수정).

  • 1/(a+bx+cx^2) from x=0 to 20 from y=0 to 1.2

여러 값을 넣어가며 확인 해보며 적당하게 사용할만한 그래프가 나오면 사용한다.



  1. 특이점은 이 경우에 분모가 0인 경우에 발생한다. 즉, LaTeX equation 가 0인 경우 감쇠 값은 무한대가 되어버린다. [본문으로]
크리에이티브 커먼즈 라이센스
Creative Commons License
2011/01/24 22:52 2011/01/24 22:52

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다

  1. Subject: casinoonlinespiele911.de

    Tracked from casinoonlinespiele911.de 2013/04/24 15:26  삭제

    Hybrid

  2. Subject: Online Casino Review

    Tracked from Online Casino Review 2013/04/26 17:31  삭제

    Hybrid

  3. Subject: hurtig lån

    Tracked from hurtig lån 2013/04/28 04:51  삭제

    Hybrid

  4. Subject: http://www.glowingcasino.com

    Tracked from http://www.glowingcasino.com 2013/04/29 11:37  삭제

    Hybrid

  5. Subject: Online Casino Spiele - casinoonlinespiele911.de

    Tracked from Online Casino Spiele - casinoonlinespiele911.de 2013/05/07 04:19  삭제

    Hybrid

  6. Subject: casino - casinoonlinecasinos.dk

    Tracked from casino - casinoonlinecasinos.dk 2013/05/10 03:46  삭제

    Hybrid

  7. Subject: Online Casinos

    Tracked from Online Casinos 2013/05/12 00:38  삭제

    Hybrid

댓글을 달아 주세요

  1. ParkPD 2011/01/25 18:12  댓글주소  수정/삭제  댓글쓰기

    오.. 수식이랑 그래프 잘 활용하시네요.
    sitmo 랑 wolframalpha 활용법 한 번 올려주세요.
    요즘 수식입력을 해야하는데 익숙하지 않아 힘드네요 T_T

    • Hybrid 2011/01/26 00:16  댓글주소  수정/삭제

      sitmo 는 LaTeX을 사용하여 수식을 입력합니다. LaTeX 사용법은
      http://www.ktug.or.kr/xe/ 이런 곳을 참고하시면 좋습니다.
      사실 문서 전체를 다루는 곳이라, http://faq.ktug.or.kr/faq/lshort-kr 이 문서를 참고 하셔서 필요한 것만 보시면 좋죠.

      단, 웹에 입력할 때는 플러그인을 만들어서 쓰고 있습니다.
      http://www.hybrid.pe.kr/tt/321

      Wolfram Alpha는 저도 간단한 것들만 써보다가 필요에 의해서 조금씩 사용법을 공부하고는 있습니다. 아이폰/아이패드 어플에 공식 가이드 어플 같은 것도 있길래 사볼까 생각중에도 있습니다.ㅎ