-
MovieNetwork Backup 4작가/코드 2014. 11. 25. 13:13
< MovieNetwork.pde >
위치 조정 전 (Default)
위치 조정 후
import shapes3d.utils.*; // Ellipsoid Library importing
import shapes3d.animation.*;
import shapes3d.*;
Shape3D exam;
import peasy.*; // Camera Library importing
import de.bezier.data.*; // Excel File Reader Library importing
XlsReader reader;
PeasyCam cam;
PVector camPos;
float angleXY, distance;
int R_Director = 1600;
int R_Film = 1200;
int R_Star = 2000;
public int filmNum = 12;
public int directorNum = filmNum;
public int starNum = 3000;
// Position of Nodes
public PVector[] film = new PVector[filmNum];
public PVector[] director = new PVector[directorNum];
public PVector[] star;
Ellipsoid[] e_film;
Ellipsoid[] e_director;
Ellipsoid[] e_star;
Shape3D picked = null; // Picked ellipsoids
Ellipsoid selected = null;
boolean clicked = false; // Mouse interaction
double dis = 10;
long ani = 3000;
// MovieData[] mData = new MovieData[filmNum];
// Java : Class is pointer. That is why this line does not work.
// Step 1) Make a list of array to save the pointer of class array. //// ArrayList<MovieData> mData;
// Step 2) Make a real space to save the content of class. //// mData = new ArrayList<MovieData>();
// Step 3) Make a temporal class object to do tasks. //// MovieData tempData = new MovieData();
// Step 4)-1) Doing the first task. //// tempData.makeMovieXML(i+1, movieID);
// Step 4)-2) Doing the second task. //// int movieDate = tempData.getMovieDate();
// Step 5) To add the tempData - which has done all tasks - in the list of class array. //// mData.add(tempData);
// Step 6) To use the class in the list of class array, use get() method with new class object. //// println("length : " + mData.size());
public ArrayList<MovieData> mData; // Step 1) Make a list of class array to save the pointer of class array.
float[] filmNumX = new float[filmNum];
float[] filmNumY = new float[filmNum];
float[] filmNumZ = new float[filmNum];
float[] directorNumX = new float[directorNum];
float[] directorNumY = new float[directorNum];
float[] directorNumZ = new float[directorNum];
float[] starNumX = new float[starNum];
float[] starNumY = new float[starNum];
float[] starNumZ = new float[starNum];
//String[] movieEngTitle = new String[filmNum]; // ^^ Long Version
boolean filmText = false;
PVector[] randomUnitV = new PVector[100];
int firstSize = 20;
int secondSize = 10;
color filmColor = color(0, 0, 0); // Black
color directorColor = color(164, 76, 36); // Brown
color starColor = color(250, 220, 0); // Yellow
void setup ()
{
//////// Display
size(750, 750, P3D);
//////// Camera
cam = new PeasyCam(this, 4000); // initial Distance
cam.setMinimumDistance(200); // minimum Distance
cam.setMaximumDistance(6000); // maximum Distance
////////// Data and Data Space
reader = new XlsReader(this, "Boxoffice.xls");
println("Reading excel file......"); // OK
mData = new ArrayList<MovieData>(); // Step 2) Make a real space to save the content of class.
//////// (1) Film Part
for (int i = 0; i < filmNum; i++)
{
int movieID = reader.getInt((i+2), 1);
println();
println(movieID);
MovieData tempData = new MovieData(); // Step 3) Make a temporal class object to do tasks.
tempData.makeMovieXML(i+1, movieID); // Step 4)-1) Doing the first task.
println("movie_" + (i+1) + ".XML File is saved.");
tempData.setMovieData(); // Step 4)-2) Doing the second task.
println("movie_" + (i+1) + "'s Each Data Setting is completed.");
int movieDate = tempData.getMovieDate(); // Step 4)-3) Doing the third task.
filmNumX[i] = map(movieDate, 20040000, 20150000, -15, 15); // Film_X = According to Date
filmNumY[i] = map((i+1), 1, 200, -15, 15); // Film_Y = According to Rank
mData.add(tempData); // Step 5) To add the tempData - which has done all tasks - in the list of class array.
}
println("Class Array List Length = " + mData.size());
// Step 6) Printing total number of the class - which has saved in the list of class array MovieData.
for (int i = 0; i < filmNum; i++)
{
//////// ^^ Long Version
//movieEngTitle[i] = mData.get(i).getMovieEnglishTitle(); // movieEngTitle[0] ~ movieEngTitle[199]
// Step 6) To use the class in the list of class array - use get() method with new class object.
//char[] alpha = movieEngTitle[i].toCharArray();
//////// ^^ Short Version
char[] alpha = mData.get(i).getMovieEnglishTitle().toCharArray();
if (alpha[0] == 'A') filmNumZ[i] = random( map(0, 1, 27, -15, 15), map(1, 1, 27, -15, 15) ); // Film_Z = According to Alphabet
else if (alpha[0] == 'B') filmNumZ[i] = random( map(1, 1, 27, -15, 15), map(2, 1, 27, -15, 15) );
else if (alpha[0] == 'C') filmNumZ[i] = random( map(2, 1, 27, -15, 15), map(3, 1, 27, -15, 15) );
else if (alpha[0] == 'D') filmNumZ[i] = random( map(3, 1, 27, -15, 15), map(4, 1, 27, -15, 15) );
else if (alpha[0] == 'E') filmNumZ[i] = random( map(4, 1, 27, -15, 15), map(5, 1, 27, -15, 15) );
else if (alpha[0] == 'F') filmNumZ[i] = random( map(5, 1, 27, -15, 15), map(6, 1, 27, -15, 15) );
else if (alpha[0] == 'G') filmNumZ[i] = random( map(6, 1, 27, -15, 15), map(7, 1, 27, -15, 15) );
else if (alpha[0] == 'H') filmNumZ[i] = random( map(7, 1, 27, -15, 15), map(8, 1, 27, -15, 15) );
else if (alpha[0] == 'I') filmNumZ[i] = random( map(8, 1, 27, -15, 15), map(9, 1, 27, -15, 15) );
else if (alpha[0] == 'J') filmNumZ[i] = random( map(9, 1, 27, -15, 15), map(10, 1, 27, -15, 15) );
else if (alpha[0] == 'K') filmNumZ[i] = random( map(10, 1, 27, -15, 15), map(11, 1, 27, -15, 15) );
else if (alpha[0] == 'L') filmNumZ[i] = random( map(11, 1, 27, -15, 15), map(12, 1, 27, -15, 15) );
else if (alpha[0] == 'M') filmNumZ[i] = random( map(12, 1, 27, -15, 15), map(13, 1, 27, -15, 15) );
else if (alpha[0] == 'N') filmNumZ[i] = random( map(13, 1, 27, -15, 15), map(14, 1, 27, -15, 15) );
else if (alpha[0] == 'O') filmNumZ[i] = random( map(14, 1, 27, -15, 15), map(15, 1, 27, -15, 15) );
else if (alpha[0] == 'P') filmNumZ[i] = random( map(15, 1, 27, -15, 15), map(16, 1, 27, -15, 15) );
else if (alpha[0] == 'Q') filmNumZ[i] = random( map(16, 1, 27, -15, 15), map(17, 1, 27, -15, 15) );
else if (alpha[0] == 'R') filmNumZ[i] = random( map(17, 1, 27, -15, 15), map(18, 1, 27, -15, 15) );
else if (alpha[0] == 'S') filmNumZ[i] = random( map(18, 1, 27, -15, 15), map(19, 1, 27, -15, 15) );
else if (alpha[0] == 'T') filmNumZ[i] = random( map(19, 1, 27, -15, 15), map(20, 1, 27, -15, 15) );
else if (alpha[0] == 'U') filmNumZ[i] = random( map(20, 1, 27, -15, 15), map(21, 1, 27, -15, 15) );
else if (alpha[0] == 'V') filmNumZ[i] = random( map(21, 1, 27, -15, 15), map(22, 1, 27, -15, 15) );
else if (alpha[0] == 'W') filmNumZ[i] = random( map(22, 1, 27, -15, 15), map(23, 1, 27, -15, 15) );
else if (alpha[0] == 'X') filmNumZ[i] = random( map(23, 1, 27, -15, 15), map(24, 1, 27, -15, 15) );
else if (alpha[0] == 'Y') filmNumZ[i] = random( map(24, 1, 27, -15, 15), map(25, 1, 27, -15, 15) );
else if (alpha[0] == 'Z') filmNumZ[i] = random( map(25, 1, 27, -15, 15), map(26, 1, 27, -15, 15) );
else filmNumZ[i] = random( map(26, 1, 27, -15, 15), map(27, 1, 27, -15, 15) );
}
for (int i = 0; i < filmNum; i++)
{
film[i] = new PVector(filmNumX[i], filmNumY[i], filmNumZ[i]);
film[i].setMag(R_Film);
}
//////// (2) Director Part
for (int i = 0; i < directorNum; i++)
{
directorNumX[i] = random(-15, 15);
directorNumY[i] = random(-15, 15);
directorNumZ[i] = random(-15, 15);
director[i] = new PVector(directorNumX[i], directorNumY[i], directorNumZ[i]);
director[i].setMag(R_Director); // outer Sphere
}
//////// (3) Actor Part
starNum = getTotalActorNum();
star = new PVector[starNum];
println();
println("Total " + starNum + " Actors");
for (int i = 0; i < starNum; i++)
{
starNumX[i] = random(-15, 15);
starNumY[i] = random(-15, 15);
starNumZ[i] = random(-15, 15);
star[i] = new PVector(starNumX[i], starNumY[i], starNumZ[i]);
star[i].setMag(R_Star);
//String currentA = wholeActors_eng.get(i);
}
//////// Making Random Unit Vectors
for (int i = 0; i < 100; i++)
{
randomUnitV[i] = PVector.random3D();
}
}
void draw()
{
//////// 3D Space
// There is the original center point in this 3D Space
background(250);
//////// Sphere
//fill(200, 20); // Color and Alpha
//noStroke();
//sphere(R_Film);
//sphere(R_Director);
//sphere(R_Star);
//text("test", 100, 100, 100);
//////// Axes for frame of reference
// line(x1, y1, z1, x2, y2, z2)
// Each line is from -100 to 100 - So we can see six end points of lines
// The standard of naming X, Y, Z axes is the initial position of the camera
strokeWeight(1);
stroke(255, 0, 0); // RED = X
line(-(R_Star + 400), 0, 0, (R_Star + 400), 0, 0);
stroke(0, 255, 0); // GREEN = Y
line(0, -(R_Star + 400), 0, 0, (R_Star + 400), 0);
stroke(0, 0, 255); // BLUE = Z
line(0, 0, -(R_Star + 400), 0, 0, (R_Star + 400) );
//////// Points on 3 axes to denote positive orientation
strokeWeight(5);
stroke(255, 0, 0);
point((R_Star + 200), 0, 0); // RED point on X
stroke(0, 255, 0);
point(0, (R_Star + 200), 0); // GREEN point on Y
stroke(0, 0, 255);
point(0, 0, (R_Star + 200)); // BLUE point on Z
//////// Drawing Dots
strokeWeight(5);
for (PVector p : film)
{
stroke(filmColor); // Black
point(p.x, p.y, p.z);
}
for (PVector p : director)
{
stroke(directorColor); // Brown
point(p.x, p.y, p.z);
}
for (PVector p : star)
{
stroke(starColor); // Yellow
point(p.x, p.y, p.z);
}
//////// Drawing Ellipsoids
//filmEllipsoid();
//directorEllipsoid();
//starEllipsoid();
if (key=='f') filmNameWriting();
if (key=='d') directorNameWriting();
if (key=='s') starNameWriting();
if (key=='a')
{
filmNameWriting();
directorNameWriting();
starNameWriting();
}
if (key=='e') TextErasing();
//////// Clicking Ellipsoid
if (clicked)
{
println("Clicked");
clicked = false;
picked = Shape3D.pickShape(this, mouseX, mouseY);
//selected =
if (picked != null)
{
println("Picked");
picked.fill(200 /*randomColor()*/);
float x = picked.x();
float y = picked.y();
float z = picked.z();
cam.lookAt(x, y, z, dis, ani); //(x, y, z, double distance, long animationTimeMillis)
/*
imageMode(CENTER);
image(test, x, y, 1000, 1000); // Blink
for (int i = 0; i < lines.length; i++)
{
if ( (e_x[i]==x) && (e_y[i]==y) && (e_z[i]==z) )
{
ellipnum = i;
}
}
imagePopup();
*/
}
}
//////// Selecting interaction (1) Selecting Film Part ////////
drawLinkFilmDirector("The Attorney"); // OK
drawLinkFilmStar("The Attorney"); // OK
if (key == 'F')
{
drawLinkFilmDirectorMotion("The Attorney"); // OK
drawLinkFilmStarMotion("The Attorney"); // OK
}
//////// Selecting interaction (2) Selecting Director Part ////////
drawLinkDirectorFilm("Bong Joon Ho"); // OK
drawLinkDirectorStar("Bong Joon Ho");
if (key == 'D')
{
drawLinkDirectorFilmMotion("Bong Joon Ho");
drawLinkDirectorStarMotion("Bong Joon Ho");
}
//////// Selecting interaction (3) Selecting Actor Part ////////
drawLinkStarFilm("RYU Seung-ryong");
drawLinkStarDirector("RYU Seung-ryong");
if (key == 'S')
{
drawLinkStarFilmMotion("RYU Seung-ryong");
drawLinkStarDirectorMotion("RYU Seung-ryong");
}
//////// Current Position
//camPos = new PVector(cam.getPosition()[0], cam.getPosition()[1], cam.getPosition()[2]);
//angleXY = degrees(atan2(camPos.z, camPos.x)); // camera XY angle from origin
//distance = sqrt(pow(camPos.z, 2) + pow(camPos.x, 2)); // XY distance between camera and object (compare to cam.getDistance())
//println("campos: " + camPos + " " + ", ang: " + angleXY + ", dist:" + distance);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////// Link Part (1) Film //////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void drawLinkFilmDirector(String filmName) // Drawing line between Film & Director
{
int filmSelec = findFilmID(filmName);
strokeWeight(1);
stroke(0);
line(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z, director[filmSelec].x, director[filmSelec].y, director[filmSelec].z);
/*
strokeWeight(firstSize);
stroke(filmColor);
point(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z);
strokeWeight(secondSize);
stroke(directorColor);
point(director[filmSelec].x, director[filmSelec].y, director[filmSelec].z);
*/
}
void drawLinkFilmDirectorMotion(String filmName) // Drawing line between Film & Director
{
int filmSelec = findFilmID(filmName);
strokeWeight(1);
stroke(0);
// Changing Director Position (According to Film Position)
// Original Point ---- Film ---- Director
director[filmSelec] = film[filmSelec].get();
director[filmSelec].setMag(R_Director);
line(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z, director[filmSelec].x, director[filmSelec].y, director[filmSelec].z);
/*
strokeWeight(firstSize);
stroke(filmColor);
point(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z);
strokeWeight(secondSize);
stroke(directorColor);
point(director[filmSelec].x, director[filmSelec].y, director[filmSelec].z);
*/
}
void drawLinkFilmStar(String filmName) // Drawing line between Film & Actors
{
int filmSelec = findFilmID(filmName);
strokeWeight(1);
stroke(200, 200);
String[] aa = new String[10];
aa = mData.get(filmSelec).getMovieEnglishActor();
for (int i = 0; i < mData.get (filmSelec).getActorNum(); i++)
{
int filmSelec_star = findStarIDTotalView(aa[i]);
line(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z, star[filmSelec_star].x, star[filmSelec_star].y, star[filmSelec_star].z);
}
}
void drawLinkFilmStarMotion(String filmName) // Drawing line between Film & Actors
{
int filmSelec = findFilmID(filmName);
strokeWeight(1);
stroke(200, 200);
int thisFilmStarNum = mData.get(filmSelec).getActorNum(); // How many stars
String[] aa = new String[thisFilmStarNum]; // What are their names
//println(thisFilmStarNum); // The Attorney - 85
aa = mData.get(filmSelec).getMovieEnglishActor();
// Changing Star Position (According to Film Position)
// Original Point ---- Film ---- Director ---- Center
PVector center = film[filmSelec].get();
center.setMag(R_Star);
PVector[] randomV = new PVector[thisFilmStarNum];
int r = 100;
for (int i = 0; i < thisFilmStarNum; i++)
{
int filmSelec_star = findStarIDTotalView(aa[i]);
// Changing Star Position (According to Film Position)
randomV[i] = randomUnitV[i].get();
println("actor " + i + " = " +randomV[i]);
randomV[i].setMag(r);
randomV[i].add(center);
randomV[i].setMag(R_Star);
star[filmSelec_star] = randomV[i].get();
//strokeWeight(10);
//stroke(200, 200);
//point(star[filmSelec_star].x, star[filmSelec_star].y, star[filmSelec_star].z);
line(film[filmSelec].x, film[filmSelec].y, film[filmSelec].z, star[filmSelec_star].x, star[filmSelec_star].y, star[filmSelec_star].z);
}
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////// Link Part (2) Director //////////////////////////
////////////////////////////////////////////////////////////////////////////////
void drawLinkDirectorFilm(String directorName) // Drawing line between Director & Films
{
int directorSelec = findDirectorID(directorName); // Bong Joon Ho - 10 (Just one.. The highest number)
strokeWeight(1);
stroke(0);
StringList directorsMovieList = new StringList(); // Bong Joon Ho's movie list
int directorsMovieNum = 0;
for (int i = 0; i < directorNum; i++) // Making movie list
{
String currentD = mData.get(i).getMovieEnglishDirector();
if (currentD.equals(directorName))
{
directorsMovieList.append(mData.get(i).getMovieEnglishTitle());
}
}
directorsMovieNum = directorsMovieList.size();
for (int i = 0; i < directorsMovieNum; i++) // Drawing line from Bong Joon Ho to movie list
{
int directorSelec_film = findFilmID(directorsMovieList.get(i));
line(director[directorSelec].x, director[directorSelec].y, director[directorSelec].z, film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
}
}
void drawLinkDirectorFilmMotion(String directorName) // Drawing line between Director & Films
{
int directorSelec = findDirectorID(directorName); // Bong Joon Ho - 10 (Just one.. The highest number)
strokeWeight(1);
stroke(0);
StringList directorsMovieList = new StringList(); // Bong Joon Ho's movie list
int directorsMovieNum = 0;
for (int i = 0; i < directorNum; i++)
{
String currentD = mData.get(i).getMovieEnglishDirector();
if (currentD.equals(directorName))
{
directorsMovieList.append(mData.get(i).getMovieEnglishTitle());
}
}
directorsMovieNum = directorsMovieList.size();
// Changing Film Position (According to Director Position)
// Original Point ---- Center_1(Film) ---- Director
PVector center_1;
if (directorsMovieNum != 1) // < Case 1 > if There are More than one film..
{
center_1 = director[directorSelec].get();
center_1.setMag(R_Film); // center_1 completed
PVector[] randomV = new PVector[directorsMovieNum];
int r = 100;
for (int i = 0; i < directorsMovieNum; i++)
{
int directorSelec_film = findFilmID(directorsMovieList.get(i));
// Changing Film Position (According to Director Position)
randomV[i] = randomUnitV[i].get();
randomV[i].setMag(r);
randomV[i].add(center_1);
randomV[i].setMag(R_Film);
film[directorSelec_film] = randomV[i].get();
//strokeWeight(10);
//stroke(200, 200);
//point(film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
line(director[directorSelec].x, director[directorSelec].y, director[directorSelec].z, film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
}
}
else if (directorsMovieNum == 1) // < Case 2 > if There is one film only..
{
int directorSelec_film = findFilmID(directorsMovieList.get(0));
film[directorSelec_film] = director[directorSelec].get();
film[directorSelec_film].setMag(R_Film);
//strokeWeight(10);
//stroke(200, 200);
//point(film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
line(director[directorSelec].x, director[directorSelec].y, director[directorSelec].z, film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
}
}
void drawLinkDirectorStar(String directorName) // Drawing line between Director & Actors (via Films)
{
int directorSelec = findDirectorID(directorName); // Bong Joon Ho - 10 (Just one.. The highest number)
//strokeWeight(1);
//stroke(0);
StringList directorsMovieList = new StringList(); // Bong Joon Ho's movie list
int directorsMovieNum = 0;
for (int i = 0; i < directorNum; i++)
{
String currentD = mData.get(i).getMovieEnglishDirector();
if (currentD.equals(directorName))
{
drawLinkFilmStar(mData.get(i).getMovieEnglishTitle());
}
}
}
void drawLinkDirectorStarMotion(String directorName) // Drawing line between Director & Actors (via Films)
{
int directorSelec = findDirectorID(directorName); // Bong Joon Ho - 10 (Just one.. The highest number)
//strokeWeight(1);
//stroke(0);
StringList directorsMovieList = new StringList();
int directorsMovieNum = 0;
for (int i = 0; i < directorNum; i++)
{
String currentD = mData.get(i).getMovieEnglishDirector();
if (currentD.equals(directorName))
{
drawLinkFilmStarMotion(mData.get(i).getMovieEnglishTitle());
}
}
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////// Link Part (3) Star //////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void drawLinkStarFilm(String starName) // Drawing line between Actor & Films
{
int starSelec = findStarIDTotalView(starName); // (Just one.. The highest number)
strokeWeight(1);
stroke(200, 200);
StringList starsMovieList = new StringList();
int starsMovieNum = 0;
for (int i = 0; i < filmNum; i++) // Rotating movies
{
String[] currentS = new String[20]; // expected maximum overlap of star in the list
currentS = mData.get(i).getMovieEnglishActor();
for (int j = 0; j < mData.get (i).getActorNum(); j++) // Rotating actors of current movie
{
if (currentS[j].equals(starName))
{
starsMovieList.append(mData.get(i).getMovieEnglishTitle());
}
}
}
starsMovieNum = starsMovieList.size();
for (int i = 0; i < starsMovieNum; i++)
{
int temp = findFilmID(starsMovieList.get(i));
line(star[starSelec].x, star[starSelec].y, star[starSelec].z, film[temp].x, film[temp].y, film[temp].z);
}
}
void drawLinkStarFilmMotion(String starName) // Drawing line between Actor & Films
{
int starSelec = findStarIDTotalView(starName); // (Just one.. The highest number)
strokeWeight(1);
stroke(200, 200);
StringList starsMovieList = new StringList();
int starsMovieNum = 0;
for (int i = 0; i < filmNum; i++) // Rotating movies
{
String[] currentS = new String[20]; // expected maximum overlap of star in the list
currentS = mData.get(i).getMovieEnglishActor();
for (int j = 0; j < mData.get (i).getActorNum(); j++) // Rotating actors of current movie
{
if (currentS[j].equals(starName))
{
starsMovieList.append(mData.get(i).getMovieEnglishTitle());
}
}
}
starsMovieNum = starsMovieList.size();
// Changing Film Position (According to Actor Position)
// Original Point ---- Center_2(Film) ---- Actor
PVector center_2;
if (starsMovieNum != 1) // < Case 1 > if There are More than one film..
{
center_2 = star[starSelec].get();
center_2.setMag(R_Film); // center_2 completed
PVector[] randomV = new PVector[starsMovieNum];
int r = 100;
for (int i = 0; i < starsMovieNum; i++)
{
int starSelec_film = findFilmID(starsMovieList.get(i));
// Changing Film Position (According to Actor Position)
randomV[i] = randomUnitV[i].get();
randomV[i].setMag(r);
randomV[i].add(center_2);
randomV[i].setMag(R_Film);
film[starSelec_film] = randomV[i].get();
//strokeWeight(10);
//stroke(200, 200);
//point(film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
line(star[starSelec].x, star[starSelec].y, star[starSelec].z, film[starSelec_film].x, film[starSelec_film].y, film[starSelec_film].z);
}
}
else if (starsMovieNum == 1) // < Case 2 > if There is one film only..
{
int starSelec_film = findFilmID(starsMovieList.get(0));
film[starSelec_film] = star[starSelec_film].get();
film[starSelec_film].setMag(R_Film);
//strokeWeight(10);
//stroke(200, 200);
//point(film[directorSelec_film].x, film[directorSelec_film].y, film[directorSelec_film].z);
line(star[starSelec].x, star[starSelec].y, star[starSelec].z, film[starSelec_film].x, film[starSelec_film].y, film[starSelec_film].z);
}
}
void drawLinkStarDirector(String starName) // Drawing line between Actor & Directors (via Films)
{
int starSelec = findStarIDTotalView(starName); // (Just one.. The highest number)
//strokeWeight(1);
//stroke(0);
StringList starsMovieList = new StringList();
int starsMovieNum = 0;
for (int i = 0; i < filmNum; i++) // Rotating movies
{
String[] currentS = new String[20]; // expected maximum overlap of star in the list
currentS = mData.get(i).getMovieEnglishActor();
for (int j = 0; j < mData.get (i).getActorNum(); j++) // Rotating actors of current movie
{
if (currentS[j].equals(starName))
{
drawLinkFilmDirector(mData.get(i).getMovieEnglishTitle());
}
}
}
}
void drawLinkStarDirectorMotion(String starName) // Drawing line between Actor & Directors (via Films)
{
int starSelec = findStarIDTotalView(starName); // (Just one.. The highest number)
//strokeWeight(1);
//stroke(0);
StringList starsMovieList = new StringList();
int starsMovieNum = 0;
for (int i = 0; i < filmNum; i++) // Rotating movies
{
String[] currentS = new String[20]; // expected maximum overlap of star in the list
currentS = mData.get(i).getMovieEnglishActor();
for (int j = 0; j < mData.get (i).getActorNum(); j++) // Rotating actors of current movie
{
if (currentS[j].equals(starName))
{
drawLinkFilmDirectorMotion(mData.get(i).getMovieEnglishTitle());
}
}
}
}
///////////////////////////////////////////////////////////////////////////
////////////////////////////// Link Part End //////////////////////////////
///////////////////////////////////////////////////////////////////////////
/*
void keyPressed()
{
if (key=='r') setup(); // Total Restart from data to structure
if (key=='x') camera(camPos.x, camPos.y, camPos.z, 0, 0, 0, 1, 0, 0); // Stabilize image on X axis
if (key=='y') camera(camPos.x, camPos.y, camPos.z, 0, 0, 0, 0, 1, 0); // Stabilize image on Y axis
if (key=='z') camera(camPos.x, camPos.y, camPos.z, 0, 0, 0, 0, 0, 1); // Stabilize image on Z axis
//camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)
if (key=='f') filmNameWriting();
if (key=='d') directorNameWriting();
if (key=='s') starNameWriting();
// Rotations work
if (key=='m') cam.rotateY(radians(2));
if (key=='n') cam.rotateY(radians(-2));
}
*/
void mouseClicked()
{
clicked = true;
}
'작가 > 코드' 카테고리의 다른 글
MovieNetwork Backup 5.2 MovieData.pde (0) 2014.12.07 MovieNetwork Backup 5.1 MovieNetwork.pde (0) 2014.12.07 MovieNetwork Backup 3.3 NetworkMethods.pde (0) 2014.11.22 MovieNetwork Backup 3.2 MovieData.pde (0) 2014.11.22 MovieNetwork Backup 3.1 MovieNetwork.pde (0) 2014.11.22