===== Interaktivt kontrolpanel med ControlP5 =====
**Mål:**
I denne opgave skal du oprette et Interaktivt kontrolpanel ved hjælp af **ControlP5**-biblioteket. Du skal implementere forskellige kontrolelementer som knapper, sliders og toggle-knapper, og få dem til at interagere med et grafisk element, f.eks. et roterende rektangel.
===== Kontrolelementer =====
Du skal oprette følgende kontrolelementer:
* **TextLabel**: En lille tekst der beskriver hvad en control skal styre.
* **Knap (Button)**: En knap, der ændrer baggrundsfarven eller farve på rektangel til en tilfældig farve, når den trykkes.
* **Sliders**: Tre sliders til at justere farverne rød, grøn og blå. Når sliders ændres, skal farven på baggrunden eller rektangel ændres dynamisk.
* **Knob** : En drejeknap til at styre sidelængde af rektangel.
* **Toggle-knap (Switch)**: En toggle-knap, der starter og stopper rotationen af et rektangel, når den er slået til og fra.
{{ :images:cp5_controlpanel.png?450 |}}
Se din tidligere opgave, eller besøg nedenstående links for at se hvordan du opretter de relevant controls:
* Link : https://www.sojamo.de/libraries/controlP5/
* Link : https://github.com/sojamo/controlp5?tab=readme-ov-file
===== Kode for rotation af rektangel =====
Her er koden, der får et rektangel til at rotere, når toggle-knappen er slået til:
import controlP5.*;
ControlP5 cp5;
float redValue = 100; // Startværdi for farverne
float greenValue = 100;
float blueValue = 100;
float sideLength = 100;
boolean isRotating = false; // Boolean til at kontrollere om rektanglet skal rotere
float angle = 0; // Startvinkel for rotationen
void setup() {
size(500, 500);
cp5 = new ControlP5(this);
// Dine controls skal du oprette her
}
void draw() {
// Baggrundsfarve opdateres baseret på sliders
background(redValue, greenValue, blueValue);
// Hvis rotationen er tændt, roter rektanglet
if (isRotating) {
angle += 0.05; // Hver frame øges vinklen en smule
}
// Tegn et rektangel, der roterer
pushMatrix();
translate(width / 2, height / 2); // Flyt oprindelsen til midten af skærmen
rotate(angle); // Roter med den aktuelle vinkel
fill(255, 0, 0); // Farv rektanglet rødt
rect(-sideLength/2, -sideLength/2, sideLength, sideLength); // Tegn rektanglet
popMatrix();
}
==== Fang toggle event ====
Her antages at der er oprette en control 'Toggle' med navnet 'toggle'.
void controlEvent(ControlEvent ev) {
if (ev.isController()) {
// Gem navnet på controlleren i en variabel
String navn = ev.getController().getName();
// Vi tjekker hvilken knap eller 'control' der har afgivet en event.
if (navn.equals("toggle")) {
isRotating = !isRotating;
}
}
}