Code – die besten Beiträge

Stimmt diese Planetenlaufbahn-Approximation?

Heyy ich versuche seit einiger Zeit mit Python eine Animation für die Laufbahn von der Erde zu erstellen, aber ich wundere mich, ob mein Ansatz stimmt. 🤔

Ich will ein Python Programm erstellen, wo ich den Exponenten des Radius im Gravitationsgesetz ändern und somit neue Umlaufbahnen zeichnen kann. Dabei stütze ich mich auf die Formel: F = G * (m1 * m2)/r^x. Ich bin mir nicht sicher, ob mein Programm korrekte Laufbahnen zeichnet, da ich nicht sonderlich gut in Physik bin. Der Grundgedanke kann ich nachvollziehen: Bei abnehmender Kraft, wird die Umlaufbahn grösser. Aber ist es normal, dass die Umlaufbahn der Erde bei einer kleinen Exponenten-Änderung von 2 auf 2.02 so viel grösser wird? Falls ja, warum ist das so?

Danke im Voraus für eure Hilfe! 😊

LG Leonie

Ein Quadrat entspricht hier einer astronomischen Einheit.

Hier ist mein Programm:

Ich verwende für meine Animation pygame.

import pygame
import sys
import math

Das sind die Konstanten, die ich verwende und die Startwerte:

G = 6.67430e-11
M_SUN = 1.989e30 
M_EARTH = 5.972e24
AU = 1.496e11
TIME_STEP = 43200
x = AU
y = 0
vx = 0
vy = 29780
exp_r = float(input"Exponent:"))

Die Erstellung des Fensters:

pygame.init()
WIDTH, HEIGHT = 800, 800
SCALE = WIDTH / (20 * AU)  # Maßstab für die Darstellung
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

Mit RK4 approximiere ich die Laufbahn der Erde. Hier sind die Funktionen:

def runge_kutta4(t, state, dt):
    k1 = deriv(t, state)
    k2 = deriv(t + 0.5 * dt, [state[i] + 0.5 * dt * k1[i] for i in range(4)])
    k3 = deriv(t + 0.5 * dt, [state[i] + 0.5 * dt * k2[i] for i in range(4)])
    k4 = deriv(t + dt, [state[i] + dt * k3[i] for i in range(4)])
    return [state[i] + (dt / 6) * (k1[i] + 2 * k2[i] + 2 * k3[i] + k4[i]) for i in range(4)]

def draw_grid():
    grid_size = AU * SCALE
    half_width = WIDTH // 2
    half_height = HEIGHT // 2
 
    for i in range(-19, 20):
        x_pos = int(half_width + i * grid_size)
        pygame.draw.line(screen, (50, 50, 50), (x_pos, 0), (x_pos, HEIGHT))
 
    for i in range(-19, 20):
        y_pos = int(half_height + i * grid_size)
        pygame.draw.line(screen, (50, 50, 50), (0, y_pos), (WIDTH, y_pos))

Hauptschleife:

running = True
t = 0
earth_path = []


while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    state = [x, y, vx, vy]
    x, y, vx, vy = runge_kutta4(t, state, TIME_STEP)
    t += TIME_STEP

    draw_x = int(WIDTH / 2 + x * SCALE)
    draw_y = int(HEIGHT / 2 + y * SCALE)
    earth_path.append((draw_x, draw_y))

    screen.fill((0, 0, 0))
    draw_grid()
    pygame.draw.circle(screen, (255, 255, 0), (WIDTH // 2, HEIGHT // 2), 20)
    pygame.draw.circle(screen, (0, 0, 255), (draw_x, draw_y), 5)

    for px, py in earth_path:
        pygame.draw.circle(screen, (0, 255, 0), (px, py), 1)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
sys.exit()
Bild zum Beitrag
Erde, Schule, Mathematik, programmieren, Astronomie, Code, Gravitation, Informatik, Physik, Programmiersprache, Python, Universität, Approximation, Gravitationskraft, Newtonsche Gesetze, Pygame, Gravitationsgesetz

DC Motor Treiber funktioniert nicht.?

Moin,

habe für ein Projekt, was ein Ferngesteuertes Auto involviert, einen DC Motor besorgt, den ich mit nem Arduino Uno programmieren wollte. Habe es mit zwei verschiedenen Treibern probiert, jedoch hat leider nichts geklappt. Egal welche Verbindung und welchen Code ich ausprobiert habe, der Motor hat sich nicht bewegt. Kaputt kann er jedoch allerdings nicht sein, wenn ich ihn direkt an den Akku den ich verwenden werde anschließe, dann dreht er sich. Die Treiber sowie der Arduino sind auch in Ordnung. Hat jemand Tipps bzw. wüsste was ich falsch mache?

Den Motor und die Treiber die ich ausprobiert habe findet ihr jeweils als Link unten.

Danke für die Antworten

Motor:

https://www.amazon.de/greartisan-Elektrische-Reduzierung-zentrisch-Durchmesser/dp/B072R5G5GR/ref=sr_1_7?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=U76NQGGOTCA5&dib=eyJ2IjoiMSJ9.Nn9ca6WnUxhBZaG6uyIuMOQd8us6GGk_SKYUQ8-pylYjFLAJC2GM8rj3KLGxwkXv0OlJw6u3uhfo5F9dap9_EA09tRPFJxa4ATV5DL_vU0aRtONnshrnaP5xxpXWUKzY9MBxi5VP6BRMzqyAjwrjhjW1kG_Ze_dGCwKwN2iAxW17R4BxCkQWkF8xFg6zHpGEKZab9Cc8h6Caqd09GftdwUtp1gBDFNxkwXI2SAkFLP9-OTGzU7ROQmXREvTSF3W3zvvcKLj3hxLX4GKASuivSlEJe_QmV0C945X8Ok2Wh6PW8AKjkjAmw7iImNSJiQDOVgFLPQEYX-iiS5pTRcSTMKJphLEgz03e0TH6yvaiVzCxgOcIMioS1DQf3LZraHo9RUTkuLiAMH08jBFb8bGNnRkdgmShf_uyqLm8fWMFTXGVwB6iqFXGQYOnsVTyTiWz.GVpdtfKctYa1yDZjYrJhq9xqMEdna86Fwl3B4zu0kOo&dib_tag=se&keywords=12v%2Bdc%2Bmotor%2Bartisan&qid=1741720756&sprefix=12v%2Bdc%2Bmotor%2Bartisan%2Caps%2C85&sr=8-7&th=1

Treiber 1:

https://www.amazon.de/BTS7960-Driver-Dealikee-Arduino-Current/dp/B09FLB44TV/ref=sr_1_7?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1YXOOXUQWIIXU&dib=eyJ2IjoiMSJ9.JU0S-u8ULi6ziih5WS752XxZJDyiJAaWfxpt3o_xQUJUEXeKZCYrhWJsH0cl_h1hUbzxwXWVqCcEViRNUO9Yir6_TvKQ9onbDn1Q9EP5Xsv29_kspVgxQUgQjsSgaUB5fk9dKdhnQa7iE60zPs_lgAtS8nHm55spg8xp9DI4Tk48_Y6MvDah2CujcRZK5grUUi6ZZpOD2YSe5uRywcbrg51HtoHgZfyut2vLcC96l4PIUsDn_kVRF4VByXiqwqEKD_McY4wbvefo05imLH7mZTmP6n_-jD6rrhdIixYpZTWAuzvZz9yKe6snngMfrBg9rAHy_6ymIFF7V66WfwMiA1kVuezOBd-wLrhn2dIJ3YxO1RknmuDuqvOzoVc85DN9L8TeutJJc5h0Qymb_WUJxCsUC3DPKa_H3MMc-n4yezxJpxOZ72zfdohmypBQB3RW.orwkKJavl0-FJ0OebjFfqrOpXTkGPNTHB9EZSBRcyno&dib_tag=se&keywords=motor+treiber+ln&qid=1741720777&sprefix=motor+treiber+ln%2Caps%2C91&sr=8-7

Treiber 2:

https://www.amazon.de/HOMSFOU-Schrittmotortreiber-Motortreiberchip-Servomotortreiberplatine-Controllerplatine/dp/B0CRHZM8XV/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1YXOOXUQWIIXU&dib=eyJ2IjoiMSJ9.JU0S-u8ULi6ziih5WS752XxZJDyiJAaWfxpt3o_xQUJUEXeKZCYrhWJsH0cl_h1hUbzxwXWVqCcEViRNUO9Yir6_TvKQ9onbDn1Q9EP5Xsv29_kspVgxQUgQjsSgaUB5fk9dKdhnQa7iE60zPs_lgAtS8nHm55spg8xp9DI4Tk48_Y6MvDah2CujcRZK5grUUi6ZZpOD2YSe5uRywcbrg51HtoHgZfyut2vLcC96l4PIUsDn_kVRF4VByXiqwqEKD_McY4wbvefo05imLH7mZTmP6n_-jD6rrhdIixYpZTWAuzvZz9yKe6snngMfrBg9rAHy_6ymIFF7V66WfwMiA1kVuezOBd-wLrhn2dIJ3YxO1RknmuDuqvOzoVc85DN9L8TeutJJc5h0Qymb_WUJxCsUC3DPKa_H3MMc-n4yezxJpxOZ72zfdohmypBQB3RW.orwkKJavl0-FJ0OebjFfqrOpXTkGPNTHB9EZSBRcyno&dib_tag=se&keywords=motor%2Btreiber%2Bln&qid=1741720777&sprefix=motor%2Btreiber%2Bln%2Caps%2C91&sr=8-3&th=1

PC, Computer, Technik, bauen, programmieren, Arduino, Code, Handwerker, Mechanik, RC, Robotik

Wieso geht der Code nicht?

Hallo

Ich möchte mit js ein Programm bauen, welches meinen Körper erkennt und dort drauf dann ein T-Shirt-Modell legt. Also so eine virtuelle Garderobe quasi. Wieso geht der Code nicht?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Virtual Try-On Final</title>
<style>
 body { margin: 0; overflow: hidden; }
 #webcam {
  position: absolute;
  transform: scaleX(-1);
  opacity: 0.5;
  z-index: 1;
 }
 #output {
  position: absolute;
  z-index: 2;
 }
</style>
</head>
<body>
<video id="webcam" autoplay playsinline></video>
<canvas id="output"></canvas>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/body-pix"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/loaders/GLTFLoader.js"></script>
<script>
const video = document.getElementById('webcam');
const output = document.getElementById('output');
let net, scene, camera, renderer, shirt;
let bodyPosition = { x: 0, y: 0, width: 0, height: 0 };
async function setupWebcam() {
 try {
  const stream = await navigator.mediaDevices.getUserMedia({
   video: {
    width: { ideal: 640 },
    height: { ideal: 480 },
    facingMode: 'user'
   }
  });
  video.srcObject = stream;
  
  return new Promise(resolve => {
   video.onloadedmetadata = () => {
    output.width = video.videoWidth;
    output.height = video.videoHeight;
    resolve();
   };
  });
 } catch (error) {
  console.error('Webcam error:', error);
  alert('Bitte Webcam-Zugriff erlauben!');
 }
}
function initThreeJS() {
 scene = new THREE.Scene();
 camera = new THREE.PerspectiveCamera(
  60,
  output.width / output.height,
  0.1,
  1000
 );
 camera.position.set(0, 0, 2);
 renderer = new THREE.WebGLRenderer({
  canvas: output,
  alpha: true,
  antialias: true
 });
 renderer.setClearColor(0x000000, 0);
 // Beleuchtung
 const ambientLight = new THREE.AmbientLight(0xffffff, 1.0);
 scene.add(ambientLight);
 const directionalLight = new THREE.DirectionalLight(0xffffff, 0.8);
 directionalLight.position.set(0, 2, 5);
 scene.add(directionalLight);
 loadShirtModel();
}
async function loadShirtModel() {
 const loader = new THREE.GLTFLoader();
 try {
  const gltf = await loader.loadAsync('tshirt_model.glb');
  shirt = gltf.scene;
  
  // Material-Anpassung
  shirt.traverse(child => {
   if (child.isMesh) {
    child.material = new THREE.MeshPhongMaterial({
     color: 0xffffff,
     transparent: true,
     opacity: 0.9,
     depthWrite: false
    });
   }
  });
  shirt.scale.set(0.3, 0.3, 0.3);
  scene.add(shirt);
  console.log('T-Shirt Modell geladen');
 } catch (error) {
  console.error('Modellfehler:', error);
  addFallbackCube();
 }
}
function addFallbackCube() {
 const geometry = new THREE.BoxGeometry(0.5, 0.5, 0.5);
 const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
 shirt = new THREE.Mesh(geometry, material);
 scene.add(shirt);
}
function calculateBodyPosition(segmentation) {
 const data = segmentation.data;
 let minX = Infinity, maxX = -Infinity;
 let minY = Infinity, maxY = -Infinity;
 for (let y = 0; y < segmentation.height; y++) {
  for (let x = 0; x < segmentation.width; x++) {
   if (data[y * segmentation.width + x] === 1) {
    minX = Math.min(minX, x);
    maxX = Math.max(maxX, x);
    minY = Math.min(minY, y);
    maxY = Math.max(maxY, y);
   }
  }
 }
 if (minX !== Infinity) {
  bodyPosition = {
   x: (minX + maxX) / 2,
   y: (minY + maxY) / 2,
   width: maxX - minX,
   height: maxY - minY
  };
 }
}
function updateShirtPosition() {
 if (!shirt) return;
 // Koordinatenumrechnung
 const x = (bodyPosition.x / output.width - 0.5) * 2;
 const y = -(bodyPosition.y / output.height - 0.5) * 2;
 
 shirt.position.set(x, y, 0);
 
 // Skalierung basierend auf Körpergröße
 const scaleFactor = bodyPosition.height / output.height * 2;
 shirt.scale.set(scaleFactor, scaleFactor, scaleFactor);
}
async function detectBody() {
 try {
  // Ganzkörper-Segmentierung
  const segmentation = await net.segmentPerson(video, {
   segmentationThreshold: 0.7,
   internalResolution: 'high',
   maxDetections: 1
  });
  calculateBodyPosition(segmentation);
  updateShirtPosition();
  // Rendering
  const ctx = output.getContext('2d');
  ctx.clearRect(0, 0, output.width, output.height);
  renderer.render(scene, camera);
  requestAnimationFrame(detectBody);
 } catch (error) {
  console.error('Detektionsfehler:', error);
 }
}
(async () => {
 await setupWebcam();
 net = await bodyPix.load({
  architecture: 'ResNet50',
  outputStride: 32,
  quantBytes: 2
 });
 initThreeJS();
 detectBody();
})();
</script>
</body>
</html>

Freundliche Grüsse

HTML, Webseite, CSS, JavaScript, HTML5, Code, Datenbank, Programmiersprache, Webentwicklung, Frontend

Bei CSS "display: flex;" wird alles schief warum?

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Login</title>
  <!-- stylesheet -->
   <link rel="stylesheet" href="styles.css">
   <!-- Boostrap Icon -->
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css" />
</head>
<body>
  <div class="container">
    <!-- Create Account -->
     <div class="sign-up">
      <div class="sign-up-container">
        <h3>Create account</h3>
        <div class="cs-form-group">
          <label for="Email">Email</label>
          <input type="email" class="cs-form-control">
        </div>
      </div class="cs-form-group">
        <label for="password">Password</label>
        <input type="password" name="" id="" class="cs-form-control">
      </div>
      <div class="cs-form-control">
        <button class="cs-form-submit">Create Account</button>
      </div>
      <span class="divider"></span>
      <div class="cs-form-group">
        <button class="social-login">
          <span class="social-icon">
            <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Google_%22G%22_logo.svg/2048px-Google_%22G%22_logo.svg.png" alt="" style="width: 20px;">
            
          </span>
          Create using Google Account
        </button>
      </div>
      <p>Already have an account?<a href="#"> Login</a></p>
     </div>
  </div>
     <!-- Login -->
     <div class="login">
     </div>
     <!-- Forgot Password -->
      <div class="forget-password">
      </div>
  </div>
  
</body>
</html>

CSS:

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');

*{
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.container{
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  background: #F5F5F5;
}

.sign-up{
  position: relative;
  padding: 10px;
  width: 420px;
}

.sign-up-container{
  position: relative;
  background: #F5F5F5;
  padding: 24px 20px;
  border: 1px solid #D4D5D8;
  box-shadow: 0px 1px 2px rgba(152, 152, 152, 0.2);
}

.sign-up-container h3{
  font-size: 28px;
  font-weight: 800;
  margin-bottom: 8px;
}

.cs-form-group{
  display: block;
}
HTML, Webseite, CSS, Code, Programmiersprache, Webdesign

Warum wird JButton in Java nicht angezeigt?

Ich programmiere Gerade ein Java Projekt und bin auf das Problem gestoßen das der JButton im secountPanel nicht angezeigt wird.

Das ist mein Code:

package com.testProjekte;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class PrimzahlenRechnerMitGUI {
    static JButton backButton = new JButton("Zurück");

    public static void main(String[] args) {
        loadGUI();
    }

    public static void loadGUI() {
        JFrame mainFrame = new JFrame("Primzahl Rechner");
        mainFrame.setResizable(false);
        mainFrame.setSize(450,300);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLocationRelativeTo(null);

        JPanel mainPanel = new JPanel(new GridBagLayout());
        JPanel secountPanel = new JPanel(new GridBagLayout());
        JPanel thirtPanel = new JPanel(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(5, 5, 5, 5);

        CardLayout cardLayout = new CardLayout();
        JPanel cardPanel = new JPanel(cardLayout);

        //main Panel Start
        JButton chooseRange = new JButton("Bereich Eingeben");
        chooseRange.setPreferredSize(new Dimension(chooseRange.getPreferredSize().width + 20, 30));
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        mainPanel.add(chooseRange, gbc);


        JButton chooseNumber = new JButton("Nummer eingeben");
        chooseNumber.setPreferredSize(new Dimension(chooseNumber.getPreferredSize().width + 20, 30));
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.EAST;
        mainPanel.add(chooseNumber, gbc);

        //main Panel end


        //secount Panel Start
        backButton.setPreferredSize(new Dimension(100, 30));
        backButton.setBackground(Color.RED);
        JLabel reangeText = new JLabel("Gib einen Bereich ein");

        JTextField startRange = new JTextField();
        startRange.setPreferredSize(new Dimension(100,30));

        JTextField endRange = new JTextField();
        endRange.setPreferredSize(new Dimension(100,30));

        JButton checkRangeButton = new JButton("Prüfen");

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.fill = GridBagConstraints.NONE;
        secountPanel.add(backButton, gbc);

        gbc.gridx = 0;
        gbc.gridy = 1;
        secountPanel.add(reangeText, gbc);

        gbc.gridx = 0;
        gbc.gridy = 3;
        secountPanel.add(startRange, gbc);

        gbc.gridx = 0;
        gbc.gridy = 4;
        secountPanel.add(endRange, gbc);

        gbc.gridx = 0;
        gbc.gridy = 5;
        secountPanel.add(checkRangeButton, gbc);
        //secount Panel end


        //thirt Panel start
        backButton.setPreferredSize(new Dimension(100, 30));
        backButton.setBackground(Color.RED);
        JLabel numberText = new JLabel("Gib eine Zahl ein");

        JButton checkNumberButton = new JButton("Prüfen");

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.WEST;
        thirtPanel.add(backButton, gbc);


        thirtPanel.add(numberText);
        thirtPanel.add(checkNumberButton);
        //thirt Panel end

        cardPanel.add(mainPanel, "MainPanel");
        cardPanel.add(secountPanel, "SecountPanel");
        cardPanel.add(thirtPanel, "ThirtPanel");

        chooseRange.addActionListener(e -> cardLayout.show(cardPanel, "SecountPanel"));
        chooseNumber.addActionListener(e -> cardLayout.show(cardPanel, "ThirtPanel"));
        backButton.addActionListener(e -> cardLayout.show(cardPanel, "MainPanel"));

        mainFrame.add(cardPanel);
        mainFrame.setVisible(true);
    }
}
App, Java, Code, Eclipse, Programmiersprache, Swing, Java Swing

Meistgelesene Beiträge zum Thema Code