xoves, 12 de xuño de 2025

DESEÑO DE FREECAD


                                COPA


 

                

A Creación dunha Copa Tridimensional en FreeCAD


. A imaxe que observamos é a representación dun sólido con volume, creado mediante operacións específicas de modelaxe 3D no software FreeCAD.

A técnica empregada para xerar esta copa en tres dimensións, á que nos referimos como "obstrucción", correspóndese coa operación de revolución dun perfil. Esta é unha das formas máis eficientes de construír obxectos con simetría rotacional, dando como resultado un modelo 3D completo.

O proceso de creación desta copa en 3D en FreeCAD desenvólvese a través dos seguintes pasos, que culminan na formación dun obxecto tridimensional:

  1. Definición do Perfil Base (2D): Aínda que o resultado sexa 3D, o punto de partida é o debuxo dun perfil bidimensional. Este perfil, realizado no "Sketcher Workbench" de FreeCAD, representa a silueta da copa cando se corta pola metade. Este é o alicerce 2D sobre o que se construirá a forma 3D.

  2. Operación de Revolución (3D): Unha vez definido o perfil 2D, aplícase a operación de "Revolve" (Revolución) dende o "Part Design Workbench". Esta é a operación que transforma o debuxo 2D nun sólido 3D, ao facer xirar o perfil arredor dun eixo vertical completo (360 graos), xerando así o volume tridimensional da copa.

  3. Aplicación de Espesor (3D): Para que a copa sexa oca e conte coas paredes que a caracterizan como recipiente, utilízase a ferramenta "Thickness" (Espesor), tamén unha operación 3D que modifica o sólido para engadir unha cavidade interna e un grosor uniforme.

  4. Refinamento de Detalle (3D): Finalmente, pódense aplicar operacións adicionais en 3D, como os "Fillets" (redondeos), para suavizar arestas e mellorar o acabado visual do modelo tridimensional.







 ADEMIAIS ESTA COPA TAMÉN FIXEN OUTROS DESEÑOS EN 3D













mércores, 11 de xuño de 2025

TRABALLOS EN PYTHON

CALULADORA DE GRAFICOS  









a gráfica da función . É o resultado é unha parábola ben definida e clara.

Para crear esta representación, usei Matplotlib,  permítenos transformar os datos nunha imaxe visual de xeito sinxelo e con moitas opcións de personalización.

  •     PROCESO

  1. Definimos a función: .
  2. Xeramos os puntos: Calculamos os valores de y para un rango de valores de x.
  3. Debuxamos: Con Matplotlib, trazamos estes puntos, creando a liña azul que vedes.
  •  GRAFICA
  • Un eixe X (horizontal) e un eixe Y (vertical) que nos indican as coordenadas.
  • Unha cuadrícula de fondo que facilita a lectura dos valores.
  • A lenda que identifica claramente a función que estamos a visualizar.

Esta calculadora fixema coa axuda dunha IA que me foi ecindo como podia mellorala.


  • CALCULADORA AVANZADA




 Distínguense dous conxuntos de botóns por cor: os tons azuis para os díxitos e funcións de memoria (MC, MR, M+, M-, MS), e os tonos salmón para os operadores aritméticos (x2,  , ÷, ×, -, +, =, etc.) e funcións avanzadas como π, log, ln, ou potencias (). O visor superior amosa o valor actual

Esta ferramenta incorpora, ademais das operacións fundamentais (suma, resta, multiplicación, división), un abano de funcionalidades matemáticas que inclúen:.

Fixen esta calculadora coa axuda dunha IA , claude, que me axudou a modificar e mellorar a calculadora cambiandoa de color ou añadindo máis botóns e operacions


  •   XOGO DE ADIVIÑAR NÚMEROS




O obxectivo primordial foi construír un xogo onde o usuario deba adiviñar un número enteiro xerado aleatoriamente dentro dun rango predefinido e nun límite de intentos. Máis alá da mecánica central, a visión estendeuse a:
  • Modularidade e Escalabilidade: Deseñar o código de forma funcional para facilitar futuras expansións e mantemento.
  • Adaptabilidade da Dificultade: Proporcionar niveis de dificultade configurables para acomodar distintas capacidades e preferencias dos usuarios.
  • Retroalimentación Intelixente: Implementar un sistema de pistas que guíe ao xogador de forma estratéxica sen revelar a solución directamente.
  • Análise de Rendemento: Ofrecer estatísticas detalladas por partida e globais para fomentar a mellora do xogador e avaliar a súa destreza.
  • Robustez na Entrada de Datos: Xestionar adecuadamente as entradas do usuario para previr erros e asegurar a estabilidade da aplicación. 
LINGUAXE

A elección de Python como linguaxe de desenvolvemento fundaméntase na súa notoria lexibilidade, a súa rica biblioteca estándar e a súa capacidade para prototipar rapidamente aplicacións. Para a implementación das funcionalidades mencionadas, fixéronse uso das seguintes bibliotecas internas de Python:

  1. random: Indispensable para a xeración do número secreto. A función random.randint(a, b) foi empregada para obter un valor enteiro pseudo-aleatorio dentro dos límites establecidos por cada nivel de dificultade. Isto garante a imprevisibilidade e a re-xogabilidade do sistema.
  2. time: Utilizada para medir o tempo transcorrido durante cada partida. A función time.time() permite rexistrar marcas de tempo que son posteriormente empregadas para calcular a duración total da rolda e, consecuentemente, influír na puntuación do xogador.

O código estrutúrase en funcións específicas, cada unha con unha responsabilidade clara, o que contribúe á modularidade e mantemento:

  • mostrar_titulo(): Dedicada á presentación inicial, mellorando a interface de usuario en consola.
  • escoller_dificultade(): Encargada da interacción co usuario para a selección do nivel de dificultade, incorporando validación de entrada mediante bloques try-except para xestionar ValueError e bucles de reintentos.
  • dar_pista(diferencia, numero_secreto, intento): Esta función exemplifica a lóxica condicional avanzada. Avalía a diferenza absoluta entre o intento do xogador e o número obxectivo para proporcionar retroalimentación cualitativa (e.g., "ARDENDO!", "QUENTE!", "TIBIO", "FRÍO!"), así como direccional (maior/menor).
  • mostrar_estatisticas(intentos, max_intentos, tempo_total): Calcula e presenta métricas de rendemento por partida, incluíndo unha puntuación derivada dos intentos e o tempo, xunto cunha clasificación textual que reflicte o desempeño.
  • xogo_principal(): A función orquestradora do sistema. Contén o bucle de xogo principal, coordina as chamadas ás demais funcións, xestiona o estado da partida (intentos, historial, estatísticas globais) e administra a lóxica de fin de xogo e re-xogo. A inclusión dun historial de intentos evita que o usuario repita adiviñas.


Durante o proceso de desenvolvemento, atopáronse e solucionáronse varios desafíos técnicos:

  • Xestión de Erros de Entrada: A implementación de try-except para ValueError e as validacións de rango e repetición de intentos garanten que a aplicación sexa robusta fronte a entradas inesperadas do usuario.
  • Deseño da Lóxica de Pistas: Equilibrouse a granularidade das pistas para que fosen informativas sen comprometer o desafío do xogo. A categorización das diferenzas ("ARDENDO", "QUENTE", etc.) é un claro exemplo disto.
  • Persistencia de Estatísticas (Intra-sesión): Aínda que as estatísticas globais se manteñen só durante a execución da sesión actual, a estrutura está preparada para unha futura implementación de persistencia en ficheiros ou bases de datos.



  
  • GRAFICO DE POBOACIÓN









As Ferramentas: Python e Matplotlib

  • Python: A miña elección pola súa sinxeleza e a súa capacidade para manexar datos.
  • Matplotlib: A biblioteca estándar para crear todo tipo de gráficos en Python, ofrecéndonos un gran control estético.

Como a fixen (o esencial do código)

  1. Datos: Primeiro, definimos os anos e os valores de poboación en listas.

    Python
    import matplotlib.pyplot as plt
    
    anos = [2018, 2019, 2020, 2021, 2022]
    poboacion = [5000, 5200, 5300, 5500, 5700]
    
  2. Debuxar a Liña: Usamos plt.plot() para debuxar a liña, engadindo marcadores e cor verde.

    Python
    plt.plot(anos, poboacion, marker='o', color='green', linewidth=2)
    
  3. Títulos e Eixes: Fundamental para que sexa comprensible.

    Python
    plt.title('Evolución da Poboación (2018-2022)')
    plt.xlabel('Ano')
    plt.ylabel('Poboación')
    
  4. Personalización: Axustamos os rangos dos eixes (plt.xticks, plt.ylim), engadimos unha grade (plt.grid) e cambiamos o fondo para mellorar a estética.

    Python
    plt.xticks(anos)
    plt.ylim(4800, 5800)
    plt.grid(True, linestyle='--', alpha=0.7)
    plt.gca().set_facecolor('#FFFACD')
    
  5. Anotación Final: Para destacar o último valor, engadimos unha anotación.

    Python
    plt.annotate('5700', xy=(2022, 5700), xytext=(2022.2, 5750),
                 arrowprops=dict(facecolor='black', shrink=0.05))
    
  6. Mostrar: Finalmente, plt.show() para ver a gráfica.

    Python
    plt.tight_layout()
    plt.show()