https://github.com/edap/udk-creative-coding
https://github.com/edap/udk-creative-coding
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/edap/udk-creative-coding
- Owner: edap
- Created: 2019-10-17T13:32:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-01-29T10:33:30.000Z (over 6 years ago)
- Last Synced: 2025-04-06T21:44:34.507Z (about 1 year ago)
- Language: Makefile
- Size: 10.4 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Intro to OF
Description:
Installation, get Familiar with your IDE, OF application structure, c++ basic operators.
Make your first OF application, create a login in the OF forum.
Keywords: `mousex`, `ofDrawCircle`, `ofColor`, `ofDrawLine`, `ofPushStyle`
Application: `first`, `animationSimple`
## Colors
Description: Learn how to create colors and and how to change them.
Keywords: `ofColor`, `ofFloatColor::red`, `ofBackground`, `ofPushStyle`, `ofPopStyle`, `ofEnableBlendMode(OF_BLENDMODE_ADD)`, `HSB`, `RGB`
Application: `colors`
### Exercise(s)
- Create your own palette, invent your own animation.
Notes for the theacher:
- Exercises "Color" at page 88 of "Code as Creative Medium"
### References
[The Interaction of Colors](https://www.goodreads.com/book/show/111113.Interaction_of_Color) by Joseph Albers.
Colors suggestion by [Manoloide](https://www.patreon.com/posts/colors-colors-18611429)
## Logical operators, comparison operator, loop and conditions
Description: Learn how to compare two variables, how to make a branch condition, how to make a loop.
Keywords: `||`, `&&`, `>`, `<`, `>=`.
Exercises:
- Make a sketch where the value of a variable is changing continuosly and you compare this value with a fixed variable. Use comparison operator or logical operator to change the visual output of your sketch.
- Make an application and draw a square. Change the background color when the mouse is over the square.
Notes for the teacher:
- Exercises "Conditional testing" at pag. 90 of "Code as Creative Medium"
Applications: `logicalOperators`, `comparisonOperators`, `sine-waves-loop`
## Matrices
Description: Learn how to move and rotate your forms
Keywords:
```cpp
ofPushMatrix()
ofPopMatrix()
ofTranslate()
ofScale()
ofRotateDeg()
ofRotateRad()
```
Application: `introToMatrices`
Exercise: Re-code "Schotter", by Georg Ness, 1965.
## Modulo operator and loops
Description: get confident with the modulo operator and loop.
Keywords: `%`, `for`, `while`
Exercises:
- Make a grid where the color of the cells depends on some calculation that involves the modulo operator.
- Make an application that uses 3 different sine waves with different amplitude and frequency.
Notes for the teacher:
- Exercises "Iteration", pag 86 of "Code as creative Medium"
## Unit cirlce, sine wave
Description:
- Understanding sin of time, plotting the sin(time) on the x axis.
- Understanding the unit circle [gif](https://commons.wikimedia.org/wiki/File:Circle_cos_sin.gif).
- How to represent a point in cartesian and in polar space, how to convert from one space to the other.
Keywords:
SOHCAHTOA, sine and cosine waves, `ofGetElapsedTimef()`, `ofMap`.
Homeworks:
- Make an application that draws a spiral.
## Noise and Random
Description: What is Randomness and what is noise, and how those are generated in the computer. Kevin Perlin and the Perlin noise in Tron.
Keywords: `ofSeed`,`ofRandom`, `ofNoise`
Notes for the teacher:
Exercises "Unpredictability" pag. 106 of "Code as Creative Medium".
Applications `noiseExample`, `randomExample`
References: [A Million Random Digits](https://en.wikipedia.org/wiki/A_Million_Random_Digits_with_100,000_Normal_Deviates), [History of randomness](https://en.wikipedia.org/wiki/History_of_randomness), [Random Number generators](https://en.wikipedia.org/wiki/Random_number_generation)
## Containers and the glm::vec2 datatype
Vectors
push_back()
size()
empty()
clear()
front()
back()
intro to point as datatype (`glm::vec2`). How to iterate through points
See, in order these app: `introToContainer`, `containers_polyline`.
### Exercise(s)
- Read [Intro to Lines](https://openframeworks.cc/ofBook/chapters/lines.html)
- Read the two references regarding `std::maps` and `std::vectors`.
Notes for the teacher:
- Exercises "Arrays" at pag. 91 of "Code as Creative Medium".
### References
[std::vectors](https://openframeworks.cc/ofBook/chapters/stl_vector.html) documentation
## Path, lines, shapes, curves.
Description: How to create shapes and lines connecting points.
Application: `shapes-Blob`
Notes for the teacher:
Exercises "Curves" pag. 93 of "Code as Creative Medium".
### Exercises
- Create your own shapes changing the algorithm that we have used to draw the circles
- Move from polar coordinates to cartesian coordinates and viceversa. Have a look to the previous exercise about the unit circle.
Keywords: `ofPath`, shapes.
## Images
Description: How to manipulate pixels one by one and save the result in an image.
Keywords: `ofImage`, `ofPixels`, `getColor`, `setColor`, `setFromPixels`, `getPixels`, `getBrightness`
Applications: `ImageLoadAndChange`, `ImageRandomPixel`
Notes for the teacher:
- Exercises "Image" at pag. 101 of "Code as Creative Medium".
## Typography
Bitmap
Keywords: `ofDrawBitmapString()`, `ofDrawBitmapStringHighlight()`, `ofTrueTypeFont font;` , `font.load(name, size, true, true, true)`, `font.drawString()`, `font.getStringAsPoints()`
Notes for the teacher:
- Exercises "Typography" at pag. 105 of "Code as Creative Medium".
Applications: `FontBoundingBoxExample`, `fontWaves`, `fontAndPixels`, `font3DExample`. See also `fontShapesExample` in your local OF installation, inside `examples/graphics`
Credits:
The apps `FontBoundingBoxExample` and `fontWaves` come from the exercises about typography in the repository [RTP_SFPC_FALL19](https://github.com/ofZach/RTP_SFPC_FALL19) by Zach Lieberman.
## Vectors and Forces
Description: move things around using vectors.
Topics: Acceleration, mass, multiple forces interaction.
Keywords: `glm::vec2`
Reference: [Nature of Code](https://natureofcode.com/book/chapter-1-vectors/). It is in processing but the concepts are valid in OF as well.
## ofNode
Description: introducing ofNode, How to combine several ofNode instances together.
Keywords: `ofNode`, `panDeg`, `ofPolyline`
[ofNode Documentation](https://openframeworks.cc/documentation/3d/ofNode/)
## Meshes
Keywords: ofNode, ofEasyCam, ofMaterial, ofLight, 3D coordinate system, normal, surfaces.
Resources:
[intro to meshes](https://openframeworks.cc/ofBook/chapters/generativemesh.html)
## Meshes and camera
Keywords: addVertex, generative meshes, how to rotate a point.
## Arduino
Description: Build an image distorsion tool using arduino.
Keywords: `ofSerial`
## OSC
Description: Make music letting your OF application talk to Sonic PI.
Keywords: `OSC`
### Appendice
Header and cpp
OF vs C++ (ofMap vs sin)
Common (core) data types
```
char
int
float
bool
string
```
Signed vs unsigned, # bits, etc.
Type casting/conversions (float to int, etc.)
Data Storage
Control
```
if (myVar == 1) {
// then to something
} else {
// otherwise do something else
}
for (int i = 0; i< 10; i++) {
// do something 10 times
}
while(myVar == 1){
// keep looping until myVar is different from 1
}
```
arithmetic operators
```
+
-
*
/
%
++
--
```
comparison operators
```
==
!=
>
>=
<
<=
```
logical operators
```
&&
||
!
```
### Working with the terminal.
You do not require xcode or visual studio 2017 to run opeframeworks. A terminal and a text editor are enough. As a text editor I suggest [visual studio code](https://code.visualstudio.com/download).
The navigation commands that you need to move around using the terminal are:
- `pwd`. It means "print working directory" and it simply print on screen the path on which you are at the moment.
- `ls`. It means "list", it lists all the files and directory in the folder where you currently are.
- `cd`. It means "change directory", and it is the equivalent of double clicking on a folder.
The commands that you need to compile openframeworks are:
- `make`. It compiles the app.
- `make run`. It runs the up.
- You can run them together using `make && make run`
A practical example. Let's say that you want to run the application call "myHomework" in the "MyApps" folder in openframewors.
Launch the terminal an write `pwd`. The terminal will reply you something like `Users/myUser`. if you print `ls`, you will see all the folder that you have in your home. Let's assume that you have openframeWorks in your `Documents` folder.
If you write `cd Documents`, you will enter the Documents folder. If, from there, you write `cd openFrameworks/apps/myApps` you will enter the `myApps` folder.
In this folder there are all your sketches, included `myHomeworks`. cd into that directory, typing `cd myHomeworks`.
Now you are inside an openFrameworks application. The `make` command will compile it and `make run` will run it. If it is the first time that you run openFrameworks, it may take a while.
### Credits
Some of the exercises in this repository come from [Zach Lieberman's repository](https://github.com/SFPC), from the book "Code As Creative Medium", by [Golan Levin](http://www.flong.com/).