【 프로세싱 기초#18 】 그림 이동하며 그리기

Language/프로세싱 2019. 5. 20. 12:56 Posted by 엑소더스팩토리
반응형

【 프로세싱 기초#18  그림 이동하며 그리기 

 이제까지는 박스에 색을 입히거나, 도형을 특정위치에 그리기만 해보았다. 이제 부터는 움직이는 도형을 구현해 볼 것이다. 프로세싱을 사용하는 주된 이유도 이런 동적움직임에 있다. 좀더 흥미롭고 재미가 있을 것이다. 

[ 직교 좌표계와 극좌표계 ]

▶ 문제 1  :  선 움직이기
    조건 :  1. 화면 사이즈(가로x세로 픽셀) : 400 x 400) , 
              2. 배경색 및 라인: background(0),  라인의 알파 값 (투명도: 20 )
              3. 라인이 화면 사이즈를 벗어 나지 않도록 함(constrain (a, b, c) : a변수의 값을 b이상 c이하 값으로 함)
              4. 새로운 라인을 그리면서 기존의 라인은 남겨 둘 것.(※그려진 라인을 이동시키는 것은 아님)

▶ 실행결과 1 (동작확인):

(전체 보기, 고화질 보기로 보세요)

▶ 프로그램(code)  1: 
(이미지를 클릭하면 확대 됩니다)

// x 와 y 변수는 전역변수로 선언한다

float x1, y1;  // 선의 한 쪽 끝점  
float x2, y2;  // 선의 다른 끝점 

 

void setup() { 
  size(400, 400); 
  background(0);   
  x1 = width/2;  
  y1 = 0; 
  x2 = width/2; 
  y2 = height;  } 
void draw()  { 
  stroke(255, 255, 255, 30); //RGB값 & 30은 투명도(Alpha) 
  x1 = x1 + random(-10, 10); //-10 이상 10 미만으로 랜덤생성 
  x2 = x2 + random(-10, 10); 
  y1 = y1 + random(-10, 10); 
  y2 = y2 + random(-10, 10); 
  // 라인이 스크린을 벗어나지 않도록 함(constrain) 
  x1 = constrain(x1, 0, width); // x1값은 0~width 사이로 고정 
  x2 = constrain(x2, 0, width); 
  y1 = constrain(y1, 0, 10); 
  y2 = constrain(y2, height-10, height); 
  line(x1, y1, x2, y2); 
  delay(50); 
}

 

▶ 프로그램(code) 다운로드 1: 
(압축 파일을 풀어서 사용하세요)

moving_Line.zip
0.00MB

반응형

【 프로세싱 기초#17 】 극좌표로 원 그리기

Language/프로세싱 2019. 5. 17. 14:53 Posted by 엑소더스팩토리
반응형

【 프로세싱 기초#17  극좌표원 그리기 

 이제까지 사각 박스를 그리거나 원을 그릴 때, 직교좌표(x, y 데카르트식)를 이용하여 그렸다. 하지만, 특히 원을 그릴 때는 극 좌표계(반지름과 각도)를 이용해서 그릴 수 있다. 즉, 공간속의 좌표를 거리와 각도로 표현하는 방법이 극좌표계 이다.  의외로 간단한 이 방법은 이후 에도 많이 활용되니 알아보도록 하자. 

[ 직교 좌표계와 극좌표계 ]

- 직교좌표는 원점에서 x(가로)와 y(세로)의 위치(거리)로서 P의 위치를 나타내는 방식이고,
   P(x, y)
- 극좌표계는 원점에서의 거리(반지름)와 각도로서 P의 위치를 나태내는 방식이다.  
   P(r, θ)

 

 이런 삼각함수의 정의를 이용하여, 극 좌표를 통해 표현되는 위치는 아래와 같다. 
  x = r cosθ     ,  y = r sin θ  가 된다.
우선 이번 프로세싱에서 원을 그려 볼텐데,  점을 찍어 주는 포인트 함수( point() )를 가지고 극 좌표 값을 이용해서 그려볼 예정이다. 

참고 :  각도를 나타내는 단위에는 도( ˚ , degree, 디그리)와 라디안(radian)이 있다. 
디그리는 원 한바퀴를 360도로 표현하는 방법이고, 우리에게 매우 익숙한 표현법이다. 
반원은 180도,  직각은 90도 등...
라디안은 수학에서 사용하기 편리한 단위이다.  1라디안은 원주 호의 길이가 반지름과 같은 길이가 될 때의 각도로 정의 된다.  

즉, 2r = 2 라디안,  3r = 3라디안  ,  ...
원주율 π는 원의 둘레를 지름으로 나눈 값(3.14159...) 이다.
즉, 반지름이 1일 때 반원의 둘레는 π이다. 

따라서 2π 가 되면 한 바퀴가 되며 이는 각도상으로 360도에 해당 된다. 
정리하면,  2π = 360도   ,   1π = 180도   ,   2분의 1π  = 90 도  ... 이런식이다.
그래서, 라디안 값과 디그리 값을 환산하는 하는 식은 아래와 같다. 

그래서,  각도(디그리) 값을 가지고 라디안 값으로 구하려면,  각도값에 (π /180) 을 곱해주고,
라디안값을 각도 값으로 바꾸려면 라디안 값에 (180/π)을 곱해주면 된다. 

  프로세싱에서는 각도값을 넣으면 라디안 값을 구해주는 함수 "radians(angle)" 와  "sin θ" , "cosθ" 을 구해주는 함수가 내장되어 있다.  따라서  삼각함수( x = r cosθ     ,  y = r sin θ  ) 정의를 이용하면, 하나의 점을 찍어(Point()함수)가며, 원의 궤적을 쫓아가면 원을 손쉽게 그릴 수 있는 것이다.    
 설명이 다소 길었는데, 그럼 직접 코딩을 통해 원을 그려보자.

▶ 문제  :  극좌표를 이용하여 원을 그려라.
   [ 조건 :  1. 화면 사이즈(가로x세로 픽셀) : 400 x 400) , 
              2. 배경색 및 라인: background(0), stroke(0)
              3. 화면의 중심에서 원을 그리기, 원의 반지름 은 100으로 하고 삼각함수( x = r cosθ , y = r sin θ  )이용 ]

▶ 실행결과 1 :


▶ 프로그램(code)  1: 
(이미지를 클릭하면 확대 됩니다)

삼각함수를 이용해 원을 그리기 #1

size(400, 400);
background(255);
stroke(0);
int centerX = width/2;
int centerY = height/2;
float x, y;
float angle;
float radius = 100;    // 반지름 100
for (angle = 0; angle < 360; angle++) {
  float rad = radians(angle); // 각도를 라디안 값으로 변환
  x = centerX + (radius * cos(rad)); //가로중심에서 x = rcosθ
  y = centerY + (radius * sin(rad)); //세로중심에서 y = rsinθ
  point(x, y);   // 점을 찍는다
}

▶ 프로그램(code) 다운로드 1: 
(압축 파일을 풀어서 사용하세요)

circle_radian.zip
0.16MB

 자 여기서 잠깐!  1도씩 점을 찍으며 그리다 보니 완전히 연결된 원이 그려지지 않았다. 
이를 해결하기 위해서는 포인트 함수(point())를 사용하지 말고, 라인함수(line())를 사용하면 이문제를 해결 할 수 있다.


▶ 실행결과 2 :

▶ 프로그램(code)  2: 
(이미지를 클릭하면 확대 됩니다)

size(400, 400); 
background(255); 
stroke(0); 
int centerX = width/2; 
int centerY = height/2; 
float x, y; 
float angle; 
float radius = 100;    // 반지름 100 
float beginx = radius+centerX; // 라인함수를 사용하기 위한 x 시작점
float beginy = 0+centerY;  //라인함수를 사용하기 위한 y 시작점

for (angle = 0; angle <= 360; angle +=5) {
  float rad = radians(angle);
  x = centerX + (radius * cos(rad));
  y = centerY + (radius * sin(rad));
  line(beginx, beginy, x, y);
  beginx = x;  // 다음 위치를 옮겨준다
  beginy = y;  // 다음 위치를 옮겨준다
}

▶ 프로그램(code) 다운로드 2: 
(압축 파일을 풀어서 사용하세요)

circle_radian2.zip
0.06MB

반응형

【 프로세싱 기초#16 】 박스로 그림 그리기 #2

Language/프로세싱 2019. 5. 17. 09:53 Posted by 엑소더스팩토리
반응형

【 프로세싱 기초#16  박스로 그림 그리기 #2

 지난시간 컬로 박스 그리기를 해보았다. 이번에는 컬럼단위로 그라디에이션을 주면서 물결이 흐르는 듯한 효과를 구현해보고자 한다.  간단하지만, 이런 기법들을 연습해두면, 추후에 프로젝트 과제 등에서 활용할 수 있을 것이다. 

[ 프로세싱의 화면 좌표 ]  - 100 x 100 pixel 예시 

▶ 문제  :  컬럼 단위로 동일한 색상의 박스를 점진적으로 변화 시키면서(마치 이동되는 느낌) 화면 영역에 그리기.
   [ 조건 :  1. 화면 사이즈(가로x세로 픽셀) : 400 x 400) , 
              2. 배경색 및 라인: background(0)
              3. 박스 (40 x 40 픽셀) : 색상은 for 반복문을 이용해서 점진적으로 증가  ]

실행결과 이미지

▶ 실행결과영상
1. 그라디에션 박스가 점진적으로 생성되며 이동된다.

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

for (int i =....
      colorPositions[i]   += 5;
      color...

      이 구문이 색상을 조금씩 밝게 변경해주는 구문이다.

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

draw_box2.zip
0.00MB

 

 

반응형

【 프로세싱 기초#15 】 컬러 박스 그리기

Language/프로세싱 2019. 5. 16. 12:43 Posted by 엑소더스팩토리
반응형

【 프로세싱 기초#15  박스 그리기

 프로세싱을 이용해서 사각형 박스를 그려보자, 프로세싱은 PC화면상에서 단순 데이터를 비주얼하게 그래픽적으로 쉽게 표현을 해주는 강력한 도구이다.  아두이노를 다루면서 프로세싱을 다루는 이유는 아두이노의 데이터를 PC화면상에 보여줄 때 아주 유용하기 때문이다.  프로세싱은 Java기반 언어지만 아두이노 스케치를 조금이라도 작성하는 수준이면 쉽게 작성할 수 있으며, 구조도 아두이노 스케치 IDE와 매우 유사해서, 차근 차근 배워나가면 크게 어렵지 않을 것이다.  아두이노는 스케치는 하드웨어를 컨트롤 하는데 초점이 맞추어져 있다면, 프로세싱 스케치는 PC상에 구현하기 위한 소프트웨어 기반이다. 따라서, 아두이노와 프로세싱을 결합해서 응용해볼 수 있는 작품들이 매우 많다.  그래서 프로세싱을 새로운 언어로 인식하거나 하여 부담가질 필요 전혀 없다. 

[ 프로세싱의 화면 좌표 ]  - 100 x 100 pixel 예시 

▶ 문제  :  화면 영역에 다중 for 문을 이용하여 40x40 픽셀의 컬러 박스를 그려 넣어라.  (컬러는 랜덤으로 생성) 

   [ 조건 :  1. 화면 사이즈(가로x세로 픽셀) : 400 x 400) , 
              2. 배경색 및 라인: background(0)
              3. 컬러박스 (40 x 40 픽셀) : 컬러는 랜덤 생성  ]

▶ 문제 (실행결과) 
1. 랜덤하게 컬러 박스 영역이 생성되고 있다.

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

draw_color_box.zip
0.00MB

▶ 내용설명&실행결과(영상) :
(이미지를 클릭하면 확대 됩니다)

(유튜브에서 보기)
https://youtu.be/Sx5mGvr75SE

반응형
반응형

 파이썬 기초#4 (영상) 파이썬 "변수와 수학 연산자"

 이번 시간부터는 파이썬을 코딩에서 사용되는 기본적인 문법을 다루어 보도록 하겠다. 그 중에서 변수와 수학 연산자에 대해 다루어 본다. 크게 어렵지 않으니 영상을 보면서 차근 차근 따라해보면 쉽게 할 수 있을 것이다. 

당부할 사항은, 코딩은 눈으로만 봐서는 안 되며, 가급적이면 코드도 ctrl+c, ctrl+v 로 쉽게 작성하기 보다. 일일이 직접 입력하는 것이 좋다.  이렇게 직접입력하다보면, 코드나 문법이 훨씬 잘 기억이 되며, 기초를 튼튼히 다질 수 있는 가장 확실한 방법이다.

 

아래 내용은 주피터 노트북을 설치하여 파이썬 3.7 버전이 실행 되는 환경이다. 

 

 

 변수와 수학연산자  학습 영상

 

파이썬 변수와 수학 연산자 학습영상

▶ 주요내용 정리 :

(이미지 클릭, 확대해서 보세요)

변수 & 수학연산자 1
변수 & 수학연산자 2
변수 & 수학연산자 3
변수 & 수학연산자 4

변수와 수학 연산자

변수

  • 변수에는 값을 할당 하게 된다.
  • 변수에는 여러가지 타입(type) 이 존재한다. (정수형, 실수형, 문자열형...)

수학 연산자

덧셈 +

뺄셈 -

곱셈 *

제곱 **

나눗셈 / ( 소숫점 이하를 버린 나눗셈 // )

나머지 %

정수 int(number)

실수 float(number)

 

【 유튜브에서 보기 

 

반응형
반응형

 파이썬 기초#3 (영상) 파이썬 개발환경 주피터 노트북 주물러 보기

 

 지난 시간에 이어 파이썬을 코딩을 위한 개발 환경인 주피터 노트북을 아나콘다를 이용하여 설치해보았는데요. 

이제 본격적인 코딩에 앞서 주피터 노트북 자체에대해 다루어 보고자 해요. 어렵지는 않으나, 무작정 코딩부터 시작하게 되면 툴에 익숙지 않으니 단순한 복사 붙여넣기에도 애를 먹을 수 있죠.  알고 시작하면 도움 될 것들에 대해 다루어 봅니다.

 

 

 

 주피터 노트북  기초 영상

 

 

▶ 주요내용 정리 :

(이미지 클릭, 확대해서 보세요)

 

#  새파일 만들기    

    New  》  Python3

 

#  코딩 작성 라인 
    추가 ( + )  ,   삭제는   ( 가위기호 )

 

# 연습문장 출력

   print ("Hello World")

 

# 출력 결과 숨기기 : 더블클릭  ,  

   출력 결과 나타내기 : 원클릭

 

#  코딩라인 머지(merge-합치기) 기능

   ( 선택후 : shift + M ) 

 

# 코딩라인 스플릿(split) 기능

   ( ctrl + shift + '-' )      ,   '-' 는 키보드 마이너스 키

 

# 동시 입력(다중커서)

  ( ctrl + 클릭 ) 

 

# 라인번호 표시하기 

  (코딩 영역 선택 후 'L' )   》 토글 됨 

 

# 개별 코딩영역이 아닌 전체 영역에 라인번호 넣기 

  ( shift   +  'L' ) 

 

# 코딩영역 복사 붙여 넣기 

  ( 영역 클릭후 C ,  원하는 곳에 V )

 

# 코딩영역 잘라낸 후 붙여넣기

  ( 영역 클릭 후 X,  원하는 곳에 V )

 

# 코딩영역 내 복사 붙여넣기

  ( 블럭 선택 후 ctrl + C  ,  원하는 곳에 ctrl + V  )

 

# 주석처리 하기 

  ( 맨 앞에 '#' 넣어 처리 ) 

 

# 주석처리 단축 키 

  ( ctrl + /  )     슬래시 키

 

# 전체선택 후 주석처리 하기

  ( ctrl + A  , ctrl + / )     토글 됨

 

【 유튜브에서 보기 

https://youtu.be/bLM_WG4NF-A

 

반응형
반응형

 파이썬 기초#2 (영상) 파이썬 개발 환경 (아나콘다) 설치와 실행

 

 파이썬을 코딩하거나 작업하기 위한 개발환경은 여러 가지 형태가 있다.  그중에서도 윈도, 맥, 리눅스 등의 운영체제 안에서 웹 환경에서 쉽게 개발할 수 있게 도와주는 아나콘다를 설치해보려고 한다.  아나콘다의 장점은 클라우드 형태의 IDE(통합개발환경) 형태로서, 파이썬의 웹코딩 툴인 주피터 노트북(jupyter notebook)과 , 파이썬을 이용한 머신러닝(AI학습) 시스템을 구축하거나, 빅데이터 분석 구축과 파이썬의 비주얼 작업 등을 도와주는 도구들 (Rstudio, spyder, Glueviz 등)을 사용하기 용이한 장점이 있다. (데이터 과학 도구들 사용 용이)

 

 앞으로 파이썬 코딩 기초부터 다뤄볼 예정이고, 종종 유용한 도구들을 함께 활용하는 법에 대해 다루어 볼 예정이다.

오늘은 그 첫 시간으로, 아나콘다 ( Anaconda )를 설치해 보도록 하겠다.  (영상 속에 설치 전 과정과 설명이 담겨 있음) 

 

 

아나콘다  다운로드 & 설치 영상

 

아나콘다 설치 및 파이썬 실행영상

 

▶ 설치과정 이미지 :

(이미지 클릭, 확대해서 보세요)

 

 

아래 자신의 PC 운영체제에 맞게 선책후 다운로드 한다. 

아래의 경우는 윈도우 64bit 버전일 경우 체크 한 경우임. 

현재는 아나콘다(Anaconda) 런처 파일을 다운로드 받고 설치 하는 과정임.  
단, 아나콘다 런처에서 파이썬을 실행하려면, 파이썬 코어가 설치되어 있어야 함으로, 파이썬이 설치 되어 있지 않은 경우 아래 파이썬 버전 중 선택하여 먼저 다운로드 후 설치를 진행하고, 아나콘다 런처(Launcher) 프로그램을 설치하면 됨.

참고로, 파이썬 버전이 아래와 같은 2.7 버전과, 3.7버전을 제시하는 이유는  파이썬 명령어 형식이 변화가 크기 때문이며, 2.7 버전에서 numpy, spyder 등등의 툴을 사용하여 구축한 시스템이 있을 경우,  3.7 버전에서 수정하고 돌릴 경우  에러가 나고 실행이 되지 않는다.   

따라서 이런 경우를 제외하고는 최근 버전인 3.7 을 다운받아 사용하면 된다.   
(참고로 현재,  Python.org 에서는 최신 버전(3.8)이 발표되 었다. )

다운로드 사이트 :  https://www.anaconda.com/distribution/#download-section

 

Anaconda Python/R Distribution - Free Download

Anaconda Distribution is the world's most popular Python data science platform. Download the free version to access over 1500 data science packages and manage libraries and dependencies with Conda.

www.anaconda.com

혹은 아래 클릭 하면 바로 다운로드 받으실 수 있습니다.

[ 아나콘다 설치 파일 다운로드 ] :  ← 클릭!

 

 

파일을 다운로드 하면 ,

위와 같은 과정으로 설치 후에는 Anaconda 실행아이콘이 설치되며, 이를 실행하면 아래와 같은 아나콘다 런처 화면을 볼 수 있다.

 

아래 주피터 노트북 런처 아이콘이 보이며,  그 외 기타 툴들을 설치하여 파이썬과 함께 사용가능하다.

 

 

※ 중요~!

 

만약,  런처 화면에서 주피터 노트북이 실행이 되지 않고, 커맨트창(도스창) 화면만 띄워져 있을 경우에는,  다른 요인 때문에 웹 브라우저에 직접 띄워 주지 못하는 경우이다.  

이럴경우 아래 주소 코드를 드래그 하여 복사 후 크롬 웹 브라우저 주소에 붙여 넣기를 하면, 주피터 노트북 페이지를 띄워 준다.  (세 가지 주소중 한가지만 Ctrl+C, Ctrl+V 하면 됨).

 

웹 브라우저에서 아래와 같은 주피터 노트북 화면이 실행이 되면, 

우측메뉴에서 New 를 클릭하고,  다시 Python3 를 클릭하면, 파이썬 코드를 입력하는 화면이 실행이 된다.

 

즉, 현재의 화면은 주피터 노트북의 파일 탐색창(관리) 같은 개념이고, 

코드가 실행 되면, 아래와 같은 코딩편집 화면을 볼 수 있을 것이다.

 

위와 같이,  웹 상에서 파이썬 코드가  직접  실행이 된다.  

shift+Enter 키를 치면 바로 그 아래 실행결과를 띄워주니 코딩 연습하기에 매우 편리한 구조이다.

 

또한 기상청 기온 데이터와 그래프를 그려주는 matplotlib 라이브러리를 적절히 이용하면,  아래와 같은 출력을 얻을 수 있다.   

( 2009년~2019년 , 10년 동안의 서울 월간 최고기온 데이터를 시각화 하기 )

 

이와 같이 파이썬은 데이터를 주무르고 실험과 실습하기 좋은 코딩환경을 Anaconda3가 제공하고 있으니 ,
한 번 활용해 보시면 좋을 것 같네요.

 

감사합니다.

 

반응형

【 프로세싱 기초 #14 】랜덤한 선 그리기

Language/프로세싱 2019. 3. 12. 11:35 Posted by 엑소더스팩토리
반응형

【 프로세싱 기초 #14】 랜덤한 선 그리기


 지난 시간 사각형 박스 화면 가운데 점을 찍어 놓고 이를 중심으로 랜덤하게 선을 그려 보았다.  이번시간에는 random() 함수를 이용해서 사각형 박스 어디든 랜덤하게 라인이 그려지도록 해볼 것이다.  



[ 프로세싱의 화면 좌표 ] 


▶ 문제 1 : 시작점과 끝점을 랜덤하게 하여 화면영역에 그리기. 

   [ 조건 :  1. 화면 사이즈(가로x세로 픽셀) : 500, 00) , 

              2. 배경색 및 라인: background(0,0,0) , stroke(255, 50)  ]



- 프로세싱 출력 빈화면




▶ 문제1 (실행결과) 


1. 랜덤 생성 중간 모습


2. 랜덤생성 완료 후 모습




▶ 문제1 & 문제2  포인트 

[ 선을 그려주는 라인함수를 사용해야 하며, 라인 함수 속 인자값을 랜덤으로 발생시켜야 한다.  이 때 시작점과 끝점 좌표의 최대치를 화면 사이즈(이하가 되도록)로 적어 놓으면 된다. 


- line() 함수 :

  [  2차원 평면상에 시작점과 끝점을 지정하여 라인을 그려 주는 함수. 

  [ 사용형식 :

》 line(x1, y1, x2, y2)  ]  : x1,y1 점에서 x2,y2로 이어지는 선을 그려준다.


- stroke() 함수 :  

  [ 선(line)과 테두리(border)의 색과(rgb,gray), 투명도(alpha)를 설정해준다. ]

  [ 사용형식 : 

    》  stroke(rgb)

    》  stroke(rgb, alpha)

    》  stroke(gray)

    》  stroke(gray, alpha)

    》  stroke(v1, v2, v3)   ; (v1, v2, v3값은 float형식으로 rgb값 또는 색상, 명도, 채도 값 가능)

    》  stroke(v1, v2, v3, alpha) 

 

 - random 함수

  [ random(x)  : x값 이하로 랜덤하게 값이 생성 된다. ]

  [ 사용 형식 :

》 random(high)  :  high값 이하로 랜덤하게 값이 생성 된다.

》 random(low, high)  : low에서 high 값 사이로 랜덤값이 생성.



▶ 프로그램(code) : 

(이미지를 클릭하면 확대 됩니다)





▶ 문제 2 : 다른 조건은 문제1과 같으며, 화면 상단 0,0의 위치에 한 점을 고정시킨 후 나머지 한 점을 랜덤생성하여 라인을 그려보자. 



▶ 문제2 (실행결과)


1. 랜덤 생성 중간 모습


2. 랜덤 마지막 모습




▶ 프로그램(code) : 

(이미지를 클릭하면 확대 됩니다)



▶ 프로그램(code) 다운로드: 

(압축 파일을 풀어서 사용하세요)

RandomLine.zip

RandomLine2.zip


반응형
반응형

【 프로세싱 기초 #13가운데 점을 중심으로 선을 램덤하게 그리기


 지난 시간 #12에서 일정한 간격으로 사선을 그려 보는 실습을 해 보았다.

이번 시간에는 화면 가운데 점을 찍어 놓고 이를 중심으로 랜덤하게 선을 그리도록 해볼 것이다.



[ 프로세싱의 화면 좌표 ] 


▶ 문제 1 : 우선 화면 가운데 점을 기준으로 1번 영역에 선들을 랜덤하게 그린 다음,  2번, 3번, 4번 영역을 그리는 것으로 생각하면 프로그래밍을 쉽게 도출해 낼 수 있다.    [ 화면 사이즈(가로x세로 픽셀) : 512, 256) ]


- 프로세싱 출력 빈화면


- 프로세싱 출력 화면 좌표 설명



▶ 문제1 (실행결과) 



▶ 문제1. 포인트 
- 라인 그리기 함수 [  line(x1, y1, x2, y2)  ]  : x1,y1 점에서 x2,y2로 이어지는 선을 그려준다. 


가운데 중심점 좌표는 "width/2, height/2"  이다. 
  (화면 사이즈 x와 y의 절반 값이 중심점이 된다. ) 


 - random 함수 [ random(x)  : x값 이하로 랜덤하게 값이 생성 된다 ]


 - 라인을 그리는 시작점은 영역의 가운데 지점(width/2, height/2)으로 정해놓고, 라인이 그려질 끝점을 랜덤하게 발생시키면 라인을 랜덤하게 그려낼 수 있다.  


 - 라인 끝점(x2, y2)을 정할 때, x2, y2 값 모두를 랜덤시키면 중복되는 라인이 그려질 수 있으므로, x2값은 for문을 돌려서 하나씩 증가시키고, y2값을 랜덤으로 돌리면 된다. 이때, 1번 영역에 한정해서 그려야 한 다는 것을 생각하자.



▶ 프로그램(code) : 

(이미지를 클릭하면 확대 됩니다)





▶ 문제 2 : 이제 1번 영역에 라인을 랜덤하게 발생 시켰으니, 나머지 2번, 3번, 4번 영역에 라인을 랜덤하게 발생 시켜 완성해보자.
 ( 답안 코드를 보기전에 미리 머리속으로 어떻게 짜야할 지 정리를 해보면 좋다)


▶ 문제2 (실행결과) 



▶ 프로그램(code) : 

(이미지를 클릭하면 확대 됩니다)



▶ 프로그램(code) 다운로드: 

(압축 파일을 풀어서 사용하세요)

Point_To_Spread_Line4View.zip


반응형
반응형

파이썬 에러】 파이썬(쉘) 프로그램이 에러뜨며 실행이 안 될 때!



 제목 처럼 잘 실행 되던 파이썬 셀프로그램이 아래와 같은 에러메세지를 띄우며 실행이 되지 않을 때가 있다. 

이때 에러를 해결 하는 방법에 대해 다루어 보고자 한다. 

(운영체제 : Windows7  ,   파이썬 버전 : Python 3.7.0  )

 


▶ 에러 증상과 화면 :

 얼마전 까지만 해도 잘 실행이 되던 파이썬이 아래창과 같은 에러 메세지를 띄우며 실행이 되지 않음.




에러메세지 글 : 
IDLE's subprocess didn't make connection. Either IDLE can't start a subprocess or personal firewall software is blocking the connection.   


 

 에러 대처 방법 : 

메세지 내용 대로 방화벽 관련 차단이 걸려 있지 않았는지 살펴 보았으나 별다른 문제는 없었다. 물론 그 사이 만진적도 없고... 


결론! 은 파이썬 파일을 작성해서 저장 할 때 기본 저장 디렉토리가 파이썬 쉘 프로그램이 설치되어 있는 폴더로 지정되어 있는데, 여기에 작업한 파일을 그대로 저장하게 되었고, 저장한 파일 이름중에 파이썬에서 예약된 환경변수 명과 같거나 유사한 이름을 가진 파일이 있을 경우인 것으로 파악되었다. 

문제가 된 파일명은  random.py 였다.  ( random 변수 생성에 관한 예제 파일을 만들어 놓은 것이 충돌을 일으킨 것으로 파악되었다. 그 외에, random_demo.py 라든지 유사한 파일에 대해서도 에러가 났다는 경우가 있는 것 같다. 


(아래 사진에서 파일유형이 "Python File" 파일인 것들이 충돌에 관여된다)



파이썬 프로그램 설치 경로 :   C:\Users\NOTE\AppData\Local\Programs\Python\Python37-32

위는 기본 경로로 설치 할 때의 경로이며,  'NOTE' 폴더명은 각자의 컴퓨터 이름이다.  (나의 윈도우 설치시 PC이름이 'NOTE' 임)


 【에러 해결 : 해당 폴더를 찾아가서 'random.py'파일 뿐 아니라 만들어 놓은 파이썬 파일들을 모두 다른 폴더로 옮기거나 삭제 하면 간단히 해결 된다. 


즉,  사진에서 파일유형이 "Python File" 파일인 것들을 모두 삭제 하거나 다른 폴더로 옮겨 놓는다.  그리고 가급적이면 이후 작업파일 들도 다른 폴더에 저장하는 것이 좋다.


 나의 경우는 위와 같은 방법으로 만들었던 파이썬 파일들을 모두 옮기고 파이썬 프로그램을 실행시켰더니 아래 이미지 처럼 에러가 뜨지 않고 아주 잘 실행 되었다. 





반응형