'[+++ FLASH +++]/- - Useful'에 해당되는 글 18건

  1. 2011.12.18 [Shortest Path Algorithm] (1)
  2. 2010.02.02 S-Curve & Mac OSX`s GenieEffect 구현 실패;;ㅠㅠ
  3. 2010.01.29 [AS 3.0] Using Flickr API (플리커 API 사용하기) (1)
  4. 2010.01.07 Adobe Kuler API 사용하기!
  5. 2009.07.16 [ 수학 ] 0^0 은 1이다? (2)
  6. 2009.06.26 < 6 26 > [AS2.0] 그라디언트 마스크 ?
  7. 2009.06.22 <6 22> 텍스트 에니메이션_2 한글편 (1)
  8. 2009.06.21 <6 21> 별것 아닌 '텍스트 에니메이션' (1)
2011.12.18 00:34
[Shortest Path Algorithm]
 

집에서 할게 없어서...(-_-;; 알바라도 해야할텐데;;;;ㅠㅠ) 이것저것 해보고 있다.ㅋ

지금 만들고 있는것이 최단거리를 찾는 알고리즘인데, 머리가 굳어서인지(....) 코딩이 생각처첨 안된다..

그래도 계속하다보면 늘겠지...하는 심정으로 만들고 있는데, 부대에서 만들었던 메서드가 잘못된것을 알게 되었다.

바로 선분/직선의 교차 여부 및 교점을 구하는 매서드인데, 부대내에서 만든게 정상작동 하질 않는다....!
(이상하게 휴가왔을때 만든 비슷한 메서드는 정상 작동한다!)

아직 원인은 찾기 힘들어서..(오타는 없는듯하다.ㅋ) 그냥 구글신께 여쭈어 복붙신공으로...가져왔다...ㅋ
( http://whitesnake.uzoo.in/76  를 참고하기 바람..ㅋ)

지금까지 구현한 부분은 (0, 0) 에서 바라봤을때 가시점(? 그니까, 보이는점.....그러니까.....자기 위치에서 바라봤을때 보이는 점을 의미...)을 색출하여 리스트를 만드는것까지 해보았다.

전에 만들어둔(사실 스맛폰 게임 SliceIt 의 알고리즘을 만들려다가 만든 매서드가 있었다.) 앵귤러 소트(....? 그러니까 각도? 무게중심을 중심으로해서 시계방향으로 점 집합을 재정렬 시켜주는)가 있어서 쉐이프(내가 맹근 다각형 도형 단위) 구현은 쉬웠다..ㅋ

클릭하면 새로 갱신됨.




뭔가 허접해 보이긴 해도.... 이틀간의 노력이 배어든 쓰레기이다....ㅠㅠ

코드는 여러가지 객체로 나눠놓고 분산되어 있어서 생략.....(하면 나쁜놈이겠지..ㅋ 필요하시면 올려드릴 수 도.....) 
Trackback 0 Comment 1
  1. Favicon of http://kopkaptain424.insanejournal.com/320.html BlogIcon click here 2012.03.29 08:17 신고 address edit & del reply

    사진 아 대충내이이해가됩다. 사 빈라덴의사망 동영보 미국대통령과경기도사 11전화내이비되요..^^; 선진이되려면아직도시이많이 요한가봅다.

2010.02.02 21:59
맥 OSX의 지니 이펙트를 구현하기 위해서 많은 노력을 기울였다.

하지만 헛수고로 돌아가게 되었다. 진짜, 꼭 구현하고 싶었던 이펙트인데;;

실패 요인을 분석해보자...................



1. 알맞은 함수를 쓰지 않았다.

내가 쓴 함수는 로지스틱 펑션인데, 이넘은 점근선(y=0, y=1)이 있기 때문에 절대 그 값이 되지 않는다. 따라서, 이펙트시에 끝머리가 움직이게 된다.

그리고, 적당한 계수를 고르지 못해서 심하게 휜 이미지를 얻었다.



2. 트윈 || 엔터프레임?

트윈을 쓴곳과 엔터프레임을 쓴곳이 있어서 복합적으로 연결했어야 했다. 따라서 코드가 더러워 지는 결과를 낳았고, 보수 및 가독성이 떨어지게 되었다. 결국엔 완성조차 못하게되는....;;;



3. 에니메이션의 복잡성

나는 맥의 지니 이펙트를 크게 3개의 움직임으로 구분했다.
최소화시엔, (최대화시엔 역으로 하면 된다.)

1) 좌우가 쫄아드는 에니메이션 (tween)

2) 밑으로 내려가는 에니메이션 (tween) // 단, 타겟 포지션을 넘어가면 타겟포지션으로 위치 고정.

3) 현재의 높이에 따라서 좌우를 쫄아들게 해주는 에니메이션 (apply)

진행 : 1 -> (1 끝) -> 2 & 3 -> (2&3 끝):에니메이션 끝.

저기서 괄호로 tween 한것은 트윈사용, apply 라고 한것은 엔터프레임에서 적용한것을 뜻한다.
저 3가지 에니메이션을 동시에 하는것도 아니라서, 딜레이가 필요했다.



4. 악순환.

최소화는 그럴듯 하게 만들었지만, {너무 심하게 휘길래, 계수 조정. 계수를 조정하니, 원하는 위치에서 0 또는 1 이 나오질 않아, 그냥 떠있는 상태를 보여주게됨. 다시 계수 수정. } 반복.................





뭐 변명이 늘었다.

구현 당시엔 이렇게 어려울것 같지 않았지만, 정작 구현해보려니 어렵다...... 진짜 어렵다......;;


그래서 S 커브 함수를 찾아보았다.

먼저 제일 기본적인 로지스틱 함수.


f(x) = 1/(1 + e^(-x))



그리고 트위너에서 이징클래스



Expo 클래스를 분해해보니, 2의 x제곱의 그래프를 사용한것이었다. 이 그래프는 정확하게 처음값과 끝값이 된다.

따라서 적당한 함수가 될듯 하다.



그리고, 탄젠트 함수.



탄젠트 함수로 로지스틱 함수와 마찬가지로..........................아니,,, 쓰다가 갑자기 생각난건데, 탄젠트 함수의 역함수가 로지스틱 함수였나? 찾아보니 아니었네;;;;;;;;;;;;;;;;;;;;아놔;;;;;; 다 까먹었다....;;




마지막으로, 내가 연구(?) 할때 써먹었던 사진 첨부...

(참고로 저 캠에 나온 사람은 글쓴이가 절대 아님. 글쓴이는 한국사람임.ㅋ)

저 사진을 분석한것. (트윈 이징함수를 고를때 도움이 되었음.)




미완성 무비라도 올리려고 했지만, 버그가 쫌 있고, 맘에 안드는 부분이 많아 올리지 않겠다.

아, 참고로 내가 쓴 방법은 uv맵핑을 이용한 drawTriangles매서드. 늣풀님께서 구현하신 방법(디스플레이스먼트맵필터)을 쓰는게 더 좋을듯 하다.



다음부터 지니이펙트 다시 구현하려는 노력은 없을듯 하다;;;;;;;;;;;;;;라고 말은 했지만 진짜 너무 구현하고 싶다...ㅠㅠㅠ

Trackback 0 Comment 0
2010.01.29 15:35
Flickr?


플리커는 야후에서 서비스 하는 사진 공유 네트워크 입니다.
자신이 찍은 사진을 전세계와 나누는 하나의 창이죠.
많은 데이터베이스를 같추고 있기에, API 를 제공해줍니다.
뭐 다른 API와 같이 먼저 개발자 키를 받아와야 합니다. (야후 아이디 필요)

저는 주민번호 적기가 싫어서 미국사이트에서 가입을 했네요,,,,,ㅋ


접속 : http://www.flickr.com/services/apps/create/

저기 있는 API키요청을 클릭하세요.


'왜 API 키를 원하십니까....'에 대한 답변을 적어주면(대충 적어도 되지만) 키가 떡 하니 나옵니다.

API 키를 받아보면, 2개의 키를 주더군요.

하나는 API 키, 다른 하나는 SECRET. 두번째껀 어디다가 쓰는지 잘 모르겠습니다. 플리커를 요번에 접해보는거라서;;;

키를 받았으니 이제 써먹어 봐야 겠죠;;;;;


플리커 API를  AS3 에서 쓰기 위해서 두가지 방법을 찾았습니다.

먼저 첫번째 방법은, 외부 라이브러리를 통해서 가져 오기
두번째는, 직접적? 으로 쿼리에 접근해서 파일 포맷을 json 으로 받아온뒤 디코더 하여 이미지컨테이너에 담는 방법...


첫번째 방법 : 외부 라이브러리 사용하기

1. 먼저 라이브러리가 두개 필요합니다.


as3corelib
as3 개발에 중요한 라이브러리의 모음집이라 할까요?

as3flickrlib
플리커 API를 다룬 라이브러리


두 라이브러릴 받고 플리커 API 라이브러리를 코어라이브러리에 집어넣어야 합니다. (경로가 딱 맞아 떨어지니 확인하시고 옮겨보세요.)


옮기고 나서는, 클래스 패스를 지정하면 됩니다. 그럼 모든 준비는 끝났거죠.ㅋ

이제 소스코드로 넘어가 보죠.

예제 1



output :
L : 100
p.id : 4312554535
// 사진의 일련 번호 같은

p.url : null
p.urls :
// 요놈들은 왜 안나오는지...-_-;;

p.title : Series:  Maiko Henmi
// 사진 타이틀

sizeArr : [object PhotoSize],[object PhotoSize],[object PhotoSize],[object PhotoSize],[object PhotoSize],[object PhotoSize]
sizeArr[0] : [object PhotoSize]
sizeArr[1] : [object PhotoSize]
sizeArr[2] : [object PhotoSize]
// 사진 사이즈라고 나왔있는데, 뭐인지.....-_-;; 사이즈면 크기값을 가질것이지, 별의별값을 갖고 있더군요..;;

s.source : http://farm5.static.flickr.com/4053/4312554535_ce3b59c5ba_o.jpg
// 사진의 진짜 주소

s.url : http://www.flickr.com/photos/artisticasianinfatuation/4312554535/sizes/o/
//요건....?

s.label : Original
//사진사이즈의 라벨;;;;

s.PhotoTag : function Function() {}
//어이쿠, 그냥 태그매서드를 출력해버렸네요...

l.content : null
// 로더의 컨텐츠는 아직 로드 되지 않아 널(null)값을 갖고 있는듯합니다.
null
l.contentLoaderInfo.content : null
l.contentLoaderInfo.contentType : null

<<로드 컴플리트시>>
li : [object Bitmap]
// 로더인포의 컨텐츠는 비트맵 객체이군요. 즉 이넘이 사진이 되겠습니다.

e.target : [object LoaderInfo]
e.currentTarget : [object LoaderInfo]
//이건 타겟과 커랜트 타겟이 같은지 한번 찍어봤네요.ㅋ

e.target.content : [object Bitmap]
//타겟의 컨텐츠가 비트맵데이터군요. 즉 이넘도 사진. (LoaderInfo 와 같은?)


뭐 다 일일이 trace 시켜서 테스트 해보았습니다. (많이 쓸것같은 부분만 볼드 처리...)
따라서 사진파일을 가져올땐, 로더인포의 컨텐츠에 접근하거나 그냥 로더 인포에 접근해서 받아오면 되겠군요....
여기서 심심치 않게 나오는 로더와 로더 인포는 뭘까요,,,,, 그래서 공부해봤습니다..ㅋㅋ


더보기






두번째 방법 : 직접 접근...


이 방법은 원더플 에서 찾은 방법입니다. 그래서 정상 작동 하는지에 대한 테스트가 없었습니다. (그곳에서는 정상 작동했으니.ㅋ)

중요 소스 코드만 긁어다가 그냥 구경만 하겠습니다..

그저 구경만...

대충 생각되는거라곤, 바로 쿼리에 요청해서 받아오는데, 포맷(형식)을 json 으로 받고, 코어라이브러리에서 JSON디코더를 사용해서 디코딩한뒤, 이미지 컨테이너에 담는것 같습니다.

그 이상은 잘 모르겠네요;;; 저런 코드가 훨씬 더 간단하고 좋다고 해야 할까요,,,;;

나중에 코어 라이브러릴 많이 알게된다면 이런 방법도 연구해 봐야 겠네요;;ㅎㅎ



참고로, 로컬에서 실행할때, 보안 설정 때문에 안될 수 있습니다. 대신, 웹에 올려서 실행할땐 보안 설정에 걸리지 않습니다. 따라서,,, 로컬에서 테스트 할땐 신뢰 되는 공간을 만든뒤 그안에서 테스트 하시는게 좋을듯합니다. (아니며 항상 허용을...ㅋ)

로컬에서 실행되어야 할 어플이라면 에어로 제작해야 겠죠,.
Trackback 0 Comment 1
  1. Favicon of https://codeonwort.tistory.com BlogIcon codeonwort 2010.01.30 12:38 신고 address edit & del reply

    <실전 예제로 배우는 Flickr MASHUPS>에 자세하게 나옵니다.

2010.01.07 19:56
Adobe Kuler (이하 쿨러)는 5가지 정도의 색상값을 만들어 웹에 올려 다른 사람들의 피드를 받을 수 있는 그런 웹 연동 어플입니다......(음.......대충 제가 느낀대로는요...)

포토샵 과 플래시 CS4에는 있더군요..... 의외로 사용할때가 별로 없어서 많이 쓰진 않지만,,,,

오늘 사운드 스펙트럼의 색을 변경시켜줄때 웹이랑, 즉 어도비 쿨러랑 연동이 되면 좋겠다! 라는 생각에 쿨러 API를 찾아보게 되었네요,,,

이만 본론으로 가보죠..ㅋㅋ

안내 페이지 들어가기

먼저, API 키 를 받아야 합니다. (어도비 아이디 필요)

저기 빨간 네모를 친 링크 클릭!


위 페이지의  a key.  를 클릭하시면 로그인한뒤, 몇가지정도를 적어주면 해당 메일로 키가 발송됩니다.

메일을 확인하면, 키가 와있고, 그곳에 링크가 2개 있는데, 첫번째 링크를 클릭해 키를 활성화 시켜줍니다.

그러면 페이지가 뜨면서 '키가 활성됬따!' 라는 문구가 반겨주죠.

그러면 크기 나온 길다란 키를 소중히 간직하세요,,,(뭐 10개정도는 받을 수 있던것 같네요..)


그다음 왼쪽 카테고리에 보면 사용방법이 나와 있습니다.

하지만, 이 글을 올린 이유가 고작 이거 뿐이라면 재미가 없지요..ㅋㅋ


AS3.0 에서 쉽게 사용하기 위해서 klib 를 받아줍니다.

k-lib

위 링크로 들어간다음 다운로드 받아 원하는 위치에 넣고, 클래스 패스에 등록을 시켜 줍니다.

셈플도 있는데, 제가 그냥 셈플을 분석한걸 올릴께요.


package 
{
    import com.adobe.kuler.events.GetResultEvent;
    import com.adobe.kuler.params.SearchParams;
    import com.adobe.kuler.swatches.swatch.color.Color;
    import flash.display.MovieClip;
    import com.adobe.kuler.KLibService;
    import flash.display.Sprite;   
   
    /**
     * This is a example of using klib to get swatches from Adobe's kuler API.
     */
    public class Testing extends MovieClip
    {       
        public function Testing()
        {
            var klib:KLibService = new KLibService("여기에 API 키를 적어 넣습니다."); //Get an API get at http://kuler.adobe.com/api/
            klib.addEventListener(GetResultEvent.GET_RESULTS, onResults);
           
            //Here is a list of example ways to use the kuler API. Just uncomment the one you want to use.
           
           
            //getRecent search example
            //klib.getRecent();
           
           
            //getHighestRated search exmaple
            klib.getHighestRated(2, 1); // 인덱스, 갯수
           
           
            //getPopular search example
            //klib.getPopular();
           
           
            //getRandom search example
            //klib.getRandom();
           
           
            //Example of email search
            //var temp:SearchParams = new SearchParams(SearchParams.EMAIL, "joshchernoff@msn.com");           
            //klib.searchSwatches(temp);
           
           
            //Example of tag search
            //var temp:SearchParams = new SearchParams(SearchParams.TAG, "dog");           
            //klib.searchSwatches(temp);
           
            //Example of hex search
            //var temp:SearchParams = new SearchParams(SearchParams.HEX, "0x00ff00");           
            //klib.searchSwatches(temp);
           
           
            //Example of THEME_ID search
            //var temp:SearchParams = new SearchParams(SearchParams.THEME_ID, "376159");           
            //klib.searchSwatches(temp);
           
            //Example of TITLE search
            //var temp:SearchParams = new SearchParams(SearchParams.TITLE, "Lady and the Tramp");           
            //klib.searchSwatches(temp);
           
            //Example of USER_ID search
            //var temp:SearchParams = new SearchParams(SearchParams.USER_ID, "211483");           
            //klib.searchSwatches(temp);       
           
           
        }       
        private function onResults(e:GetResultEvent):void
        {
            trace(e);
            trace("recordCount", e.results.recordCount)
            trace("startIndex", e.results.startIndex);
            trace("itemsPerPage", e.results.itemsPerPage);
            trace(e.results.swatches.length)
            trace(e.results.swatches[0])
// 컬러 값을 받아올때
            trace(e.results.swatches[0].colors[0].swatchHexColor)
            trace(e.results.swatches[0].colors[1].swatchHexColor)
            trace(e.results.swatches[0].colors[2].swatchHexColor)
            trace(e.results.swatches[0].colors[3].swatchHexColor)
            trace(e.results.swatches[0].colors[4].swatchHexColor)
           
            var i:int = 0;
            var s:Array = [];;
            for each(var swatch:Object in e.results.swatches)
            {               
                //Make a blank holder per swatch
                var swatchHolder:Sprite = new Sprite();
                addChild(swatchHolder);
                //place it's x and y
                swatchHolder.y = i++ * 20;
               
                //Fill the colors per swatch
                var j:int = 0;
                for each(var color:Color in swatch.colors)
                {
                   
                    swatchHolder.graphics.lineStyle(0,0,0);
                    swatchHolder.graphics.beginFill(int("0x"+color.swatchHexColor)); //Get color of each color in this swatch per loop.
                    swatchHolder.graphics.drawRect(j++ * 20,0, 20,20);
                    swatchHolder.graphics.endFill();
                    s.push("0x" + color.swatchHexColor);
                }
                trace(s)
                s.length = 0;
            }
           
        }       
    }   
}

output :

[GetResultEvent numOfResulsts=287152 results=[object Swatches] type="getResult" bubbles=false cancelable=false eventPhase=2]
recordCount 287152
startIndex 2
itemsPerPage 1
1
[object Swatch]
183021
455227
A6AF3C
DBD03B
E1EB83
0x183021,0x455227,0xA6AF3C,0xDBD03B,0xE1EB83

for each ...in 구문을 써본적이 없어서 해석(?) 하는데 조금 어려웠네요....

Trackback 0 Comment 0
2009.07.16 18:16

네이버의 D2 카페에서 어떤 회원분이 내가 만든 수식 계산기를 보고 댓글을 달아 주셨네요.

그런데, 댓글 내용이 바로, "그런데 0의 0제곱은 1인지 잘 모르겟군요" 인데요, 학교에서 배울땐,

"0^0 은 정의하지 않는다아~" 라고 배웠어요,,, 그런데, 제가 만든 계산기로 계산한 결과....이런! 1이 출력되는군요??

흐음? 그래서 포탈사이트에서 계산을 해봤지만, 계산이 안되네요, 그래서 컴터 계산기로 돌려본 결과,,,1!

으음? 마지막으로 엑셀에서 실행해 보니, #NUM! 에러를 뿜는군요.....;;

그래서 웹서핑을 한 결과, 네이버의 '오늘의 과학' 에 나와있더군요, 그래서 긁어 와 봤습니다. (안될까요?)

 

윈도에 내장되어 있는 계산기(공학용 보기를 이용)를 이용해서 0의 0제곱을 계산해 보면 1을 출력한다. 인터넷에서 계산기 찾아서 이용해도 같은 결과가 나온다. 그렇다면 00=1일까?

 

 

 

한편, 업무용 프로그램인 엑셀(Excel)에 0의 0제곱을 입력하면 오류 메시지가 출력된다. 수학용 프로그램으로 유명한 매스매티카(Mathematica)에서도 00을 “Indeterminate(정할 수 없는, 不定)”로 처리한다.

 

 

어떤 프로그램에서는 00을 1로 처리하고, 어떤 프로그램에서는 처리할 수 없다고 하니, 심지어 같은 회사가 만든 프로그램에서도!  참으로 이상한 일이 아닐 수 없다. 전혀 궁금하지 않다는 사람들도 많겠지만, 00을 무엇으로 생각해야 할지는 역사적으로 오랫동안 논쟁 및 고민거리의 하나였다.

 

 

“거듭제곱”이란 “거듭하여 자신을 곱한다”는 뜻인데, 세 번 거듭 곱하거나, 스무 번 거듭 곱하는 것은 누구나(?) 무슨 뜻인지 안다. a가 수일 때 a를 n개 곱한 것을 an으로 나타내는데, 지수 n이 자연수일 때는 그 뜻이 분명하다. 따라서 이 표기법에 따르면 지수 n이 자연수인 한 당연히 0n=0 이다. 그렇다면 지수가 0이나 음수인 경우는 어떻게 될까? a를 0개 곱하거나 -3개 곱하거나 할 수는 없으므로 곧이곧대로는 정의할 수 없다. 따라서 ‘음수끼리 곱하면 양수’라는 설명을 했을 때와 마찬가지로, 어떻게 정의하는 것이 합리적인지 생각해 볼 필요가 있다. 그 열쇠를 쥔 것은 m과 n이 자연수일 때 성립하는 다음 등식, 즉 ‘지수 법칙’이다.
                                            

이 지수법칙이 음의 지수에 대해서도 성립하도록 a-3같은 것을 정의하려면, 다음과 같은 등식이 성립하는 것이 좋을 것이다.  

 

양변을 a5으로 나눠주면, a-3은 a2÷a5 임을 알 수 있다. 이 때 문제가 하나 있는데 양변을 a5으로 나누려면 이 수가 0이 아니어야 한다.

만약 a=0이라면 이런 논법이 통하지 않는다. a가 0이 아닐 때는 다음과 같다.

 

 

이렇게 음수와 0에 대해서도 지수를 정의해 주면 (밑이 0일 때는 제외하고) 고맙게도 지수법칙 am×an=am+n이 여전히 성립한다. 예를 들어, a-3×a-4=a-7임을 확인할 수 있다. 거듭제곱과 지수의 관계에 대한 이상의 설명에서 알 수 있듯, 자연수 n에 대하여 0n=0이고, 0이 아닌 수 a에 대하여 a0=1이지만, 밑과 지수가 모두 0인 00에 대해서는 아무런 정보도 주지 않는다. 그렇다면 00은 어떻게 정의하는 것이 합리적일까? 과연 합리적인 정의라는 게 가능하기는 한 걸까?

  

 

특히 다항식과 관련한 경우, 00을 1로 두면 수식이 간단해지는 경우가 많다. 예를 들어 다음과 같은 다항식을 생각해 보자.

   

여기에서 x3은 3차항, -5x2은 2차항이다. 7x는 1차항인데, 7x1이라 쓰면 차수를 알 수 있게 해 주므로 일관성이 있다. 남아 있는 상수항 2는 0차항으로 생각하는 것이 합리적이므로 2x0이라 쓰는 것이 편리할 것이다. 따라서 차수를 고려해서 다항식을 표현하면, 아래와 같이 쓸 수 있다.  

 

원래 다항식에 x=0을 대입하면 당연히 값이 2인데, 차수를 밝혀준 식에 대입할 경우 00= 1이어야 양변이 일치한다! 따라서 00= 1이라고 보는 것이 합리적이다.

 

 


 

이처럼 극한 이론이 발전하면서 00=1로 간주하자는 주장이 크게 공감을 얻었다. 물론 모두가 그런 것은 아니어서, 예를 들어 프랑스의 위대한 수학자로 극한 이론을 엄밀하게 정립한 코시(Augustin Cauchy, 1789-1857)는 1821년에 쓴 저서에서 여전히 00은 정의할 수 없는 것으로 분류하였다.

 

 

1830년대에 이탈리아의 수학자 리브리(Gulielmo Libri, 1803-1869)는 00=1을 증명하는 논문을 썼는데 내용이 다소 명확하지 못하여, S라는 서명으로만 알려진 익명의 수학자의 비판을 받았다. 우리에게 “뫼비우스의 띠”로 유명한 독일의 수학자 뫼비우스(F. Möbius, 1790-1868)는 얼마 후 리브리의 주장을 옹호하는 논문을 한 편 발표하였는데, 그의 주장은 다음과 같다. 

 

 

 

 

가끔 a0=1에 대하여 “거듭제곱은 1에 어떤 수를 곱하는 과정이다. 그런데 지수가 0이면 아무것도 곱하지 않았다는 뜻이므로 그 값은 1이 될 수밖에 없다”는 식으로 설명하는 사람을 볼 수 있다. 이것이 거듭제곱을 이해하는 한 가지 방편일 수는 있겠으나, 엄밀히 말하면 앞뒤가 바뀐 설명이다. 거듭제곱을 이런 식으로 생각하는 것은 “a0=1이므로 an은 (지수 법칙에 따라) 1에 a를 n번 곱하는 것이다”와 같은 말이다. 즉, a0=1을 가정한 상태에서 하는 설명이므로, 이로부터a0=1이 된다고 말하는 셈이다. 따라서 이런 설명을 이용해서 00= 1이라고 주장하는 것은 옳지 않다.

 

 

수식도 많고, 글도 길어져서 필자도 미안하게 생각한다. 읽기 힘든 분을 위하여 마무리를 겸하여 내용을 요약하면 다음과 같다.

1. 00은 정의하지 않는다. (값을 아직도 모른다는 말이 아니다.)
2. 그렇지만 ‘주의하여 사용한다면’ 편의상 00= 1로 정의할 수 있다.
3. 위대한 수학자도 실수할 때가 있다.



그렇다,,,정의 하진 않지만, '편의상' 1로 간주할 수 도 있나보다..

그렇다면,,, 내가 만든 수식 계산기에서는 1/0 = 인피니티, 즉 무한이라고 하는데, 이걸 그냥 언디파인드(정의 되지 않음 or NaN or !!err!! 라고 표기할까..? 하지만, 나는 철저히 플래시의 계산엔진에 의존하는 것이니 그냥 두겠다.)
Trackback 0 Comment 2
  1. RMZ 2009.07.17 21:37 신고 address edit & del reply

    재밌는 글이네 ㅎㅎ

  2. 으난 2009.07.18 01:32 신고 address edit & del reply

    오늘의 과학에서 나왔다니!
    이거 매일 바뀔텐데...
    이런 타이밍이!

2009.06.26 16:20
그라디언트 마스크라는 것은 아래 이미지와 같이 마스크를 입히되, 점점 투명도가 변화하는 마스크를 뜻한다.
뭐 당연히! 배경 이미지가 없다면 그냥 배경색으로 얼추 만들면 되겠지만,,,, 배경이미지가 있다면? 이러면 곤란해진다...

그래서, 그라디언트 마스크가 필요하게 되는데,,,어떻게 만드는 것일까,,?


먼저 사진을 하나 준비하고 무비클립으로 만든뒤,


위 그림처럼, 하나는 똑바로, 다른 하나는 상하를 반전시킨다. (상하 반전시킨 무비클립의 인스턴스네임 : bg)

그다음 '이부분' 이라고 표시된 부근에 사각형 무비클립을 만드는데, 이 사각형 무비클립의 width 값은 사진의 width 값과 같아야 한다. (이 사각형 무비클립의 인스턴스네임 : mc)

그리고 적당히 크기를 조절하고, 사각형 무비클립에 알맞은 알파가 적용된 그라디언트를 입혀준다.



그다음 아래의 코드를 프레임에 입력한다.

 1 _root.onLoad = function(){ // 무비가 로드되자 마자
2 _root.mc.cacheAsBitmap = true;
3 _root.bg.cacheAsBitmap = true; // 두 무비클립을 비트맵 캐싱한다.
4 _root.bg.setMask(_root.mc) // 마스크를 씌운다. (bg에 mc를 씌움)
5 }



처럼 예쁘게 그라디언트 마스크가 씌워진다..... 너무너무 간단하고 쉽다.....ㅎ 이걸 함수로 만들어 보는것도 좋을듯 하다. (드로잉 API를 적절하게 써주면 쉽게 만들수 있을듯 하다... 여러가지 인수도 받고,,,)


ps. 사진의 주인공은 한예슬 ^^
Trackback 0 Comment 0
2009.06.22 13:24
이번에는 한글을 만들어 보았다...

하지만 실제 타이핑 하는것과는 많이 다르다. 예를들면, 2벌식 배열에서 받침을 입력할때, 예를 들어 ㄳ 을 입력할때는 ㄱ, ㅅ 을 입력해줘야 한다.

따라서 삯이란 글씨를 에니메이션 할때는,

ㅅ 사 삭 삯

이 순서로 가야 옳지만, 내가 발코딩을 해놓은건,

ㅅ 사 삯

이렇게 된다,, 마찬가지로 괘 를 에니메이션 할때는

ㄱ 고 괘

가 옳지만, 내가 발코딩 한건,

ㄱ 괘

가 되어버린다. 이는 분석을 안하고 바로 유니코드를 대입해버려서 이런것인데, 약간의 노가다가 필요하다..;;


시간날때 완성을 해야겠다.




fps=30;
Trackback 0 Comment 1
  1. 으난 2009.06.23 01:08 신고 address edit & del reply

    근데 워낙 빨라서 잘 모르겠.....;;

2009.06.21 15:07
몇몇 풀 플래시 홈페이지에서 쓰이는, 메뉴의 텍스트를 에니메이션 하는것을 말합니다.

백마디 말보다 무비 하나가 더 이해가 잘 되겠지요,,,ㅋ



(자동 재생됩니다, 하지만 다시 재생할 수 없습니다. 버튼을 안만들었기에;;;ㅋㅋㅋ)



지금은 테스트 버전이라 쫌 맘에 안드는 방식으로 작성했네요..

지금은 숫자, 영문(대/소문자), 스페이스 밖에 안됩니다, 추후에 한글도 가능하게 만들 생각이네요,,,(한글을 할때 다시 만들어야 겠다는,,, 도저히 이 알고리즘으로는 한글 하기가 노가다이므로,,)

아, 쫌 속도가 느린감이 있는데, 현재 fps는 30입니다.
Trackback 0 Comment 1
  1. 으난 2009.06.22 01:52 신고 address edit & del reply

    이쪽에 대해선 문외한이지만.
    갈수록 속도가 느려지긴 하군요.. 아마도 A부터 로드하기 때문일까요..
    그럼 한글은 어떻게될지 기대됩니다~
    다시 말하지만 전 이쪽에 대해선 전혀 모릅니다아.