Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - biggsman

Pagine: [1] 2 3
1
Le stampanti sla/dlp vanno molto bene e sono facili da costruire ma il proiettore costa un botto!

2
Si lo so che sembra una follia ma sono italiano e di conseguenza naturalmente portato a sbroccare..
Le stampanti sla/dlp vanno molto bene e sono facili da costruire mentre quelle che abbinano un laser ad un sistema X|Y
sono economiche, più difficili da realizzare ma lente..
Se riesco a proiettare tipo in rastrello di punti contemporaneamente...
beh potrebbe migliorare parecchio ma soprattutto, variando la distanza fovale potrei fare pezzi piccoli ad alta precisione o pezzi grandi
a bassa risoluzione più rapidamente..
Forse sono un po' OTma penso che a qualcuno potrebbe interessare.
Cmq son contento pechè oggi credo di avere fatto qualche passetto avanti..

3
si procede!
Nella prima colonna le coordinate dei pixel x, nella seconda di y, nella terza una stringa per accendere un array di led Uv...
sto tentando di costruire una stampante 3d cartesiana ed economica...

4
Ecco la routine

Codice: [Seleziona]
 Dim Testo As String 
   Dim Risultato As String
   Dim Flg As String
   Dim x, y As Integer
   Dim xx, yy, somma As Integer
   Dim im As Image
   Dim xs, ys As String
   
 
  im = Image.Load("/home/io/Scrivania/slice.bmp")
  somma = 0
  For x = 0 To im.W - 1
   
    For y = 0 To im.h - 1
     
      For yy = y To y + 10
          somma = somma + im[x, yy]
          If im[x, yy] = 0 Then
            Flg = Flg & 0
          Else
            Flg = Flg & 1
          Endif
      Next
      If somma > 0 Then
       ' Print "ci sono pixel colorati"
        If Len(Str$(x)) = 1 Then xs = "00" & Str$(x)
        If Len(Str$(x)) = 2 Then xs = "0" & Str$(x)
        If Len(Str$(x)) = 3 Then xs = Str$(x)
       
        If Len(Str$(y)) = 1 Then ys = "00" & Str$(y)
        If Len(Str$(y)) = 2 Then ys = "0" & Str$(y)
        If Len(Str$(y)) = 3 Then ys = Str$(y)
       
        Risultato = Risultato & xs & "    " & ys & "    " & Flg & gb.NewLine
      Else
       ' Print "non ci sono pixel colorati"
      Endif
      y = y + 9
      somma = 0
      Flg = ""
    Next
  Next

File.Save("/home/io/Scrivania/slice_mediaa.txt", Risultato)
TextArea1.text = Risultato

e questo è il risultato già filtrato dai dati inutili

Codice: [Seleziona]
000    260    00000011111
000    270    11111111111
000    280    11111111111
000    290    11111111111
000    300    11111111111
000    310    11111111111
001    000    11111111111
001    010    11111111111
001    020    11111111111
001    030    11110000000
001    260    00000011111
001    270    11111111111
001    280    11111111111
001    290    11111111111
001    300    11111111111
001    310    11111111111

5
si infatti a me serve il terzo blocco..

6
W ott!
Grazie amico!
gia in passato ho ricevuto un valido aiuto da te: "Gambas3 + Arduino e plot dei dati.." ricordi?
questo è gia un grande passo avanti!
adesso studio un po'..  :)

7
Salve amici!
Avrei bisogno di riuscire ad estrapolare dei dati da un file bitmap /(24 bit) 10 per 10 pixels (per ora) e cioè:
     Aprire
     Scartare Header
     Tenere il descrittore dei colori
Per ogni pixel scrivere una stringa che descriva posizione x e y e "on" se il colore di questo è diverso da 0 (nero)
In poche parole fare un semplice Per chi lo sa fare..) parsing e dalla tripletta rgb
tipo:
Codice: [Seleziona]
...
Pixel 12 x2 y1 on
Pixel 13 x3 y1 on
Pixel 14 x4 y1 off
...
Pixel 46 x6 y4 on
...


il problema è la codifica che non è ascii
leggendo un po' su google ho letto di questo littel.endian che incasinano su tutto
Se solo riscissi a modificare il contenuto binario in una stringa dopo saprei cosa fare..

pensate sia possibile?  ???
Masiddai!

8
Programmazione / Pc > Sd file transfer (Arduino)
« il: 23 Maggio 2015, 06:43:28 »
Buongiorno a tutti!
Mi piacerebbe sapere se c'è la possibilità o se esiste già
un codice per trasferire dei file .bmp su di una Sd alloggiata
in un display tft montato su Arduino..
Al momento non ho trovato nulla ma credo si possa fare.
che ne dite?  :o ??? :rolleyes:

9
Si ma è commentato!  ;)

10
il valore incriminato è -  ,0642 che meshlab non accetta
adesso forse è bene che aggiunga il codice per la traslazione e poi un po' di ordine non guasta vero?

11
ecco adesso funziona con queste modifiche:
Codice: [Seleziona]
   Dim alpha As Integer       'angolo
   Dim pointx As Float      'x point da spostare
   Dim pointy As Float     'y point da spostare
   Dim pointz As Float     'z point da spostare
   Dim Newpointx As Float
   Dim Newpointy As Float
   Dim Sinalpha As Float
   Dim Cosalpha As Float
   
   Dim NewpointStX As String
   Dim NewpointStY As String
   
   Dim X As Integer
   Dim Y As Integer
 
Dim i As Integer
Dim HFile As File
Dim Sline As String
Dim intestazione As String
Dim testo As String
Dim trap As Integer
Dim a As String
Dim aa As String[]
Dim j As Byte
Dim esclusivo As Integer
Dim escludi As String
Dim Resto As String

alpha = 72
HFile = Open "/home/io/Scrivania/cloud_new.ply" For Input

While Not Eof(hFile)


  Line Input #hFile, Sline
 
    trap = trap + 1
    If Trap < 13 Then Goto loop1
 
     a = Replace(Sline, "\n", " ")
     a = Replace(Sline, ".", ",")
     aa = Split(a, " ", "", True)

       escludi = aa[1]
       esclusivo = Val(escludi)
       
     
       If esclusivo > 20 Then 'Goto loop1
       SLine = ""
       Else
         '''''''''''''''''''''''''''''''''''''''''''''''
 
  pointx = Val(aa[0])
  pointy = Val(aa[1])
 
  X = InStr(Sline, " ")
  Y = InStr(Sline, " ", X + 1)
 
Resto = Mid$(Sline, (y + 1))
Resto = Replace(resto, ".", ",")
Sinalpha = Sin(alpha * (Pi / 180))
Cosalpha = Cos(alpha * (Pi / 180))

newpointx = (pointx * Cosalpha) - (pointy * Sinalpha)
newpointy = (pointx * Sinalpha) + (pointy * Cosalpha)
 

 NewpointStX = Left$(Str$(newpointx), 7)
 NewpointStY = Left$(Str$(newpointy), 7)
 
 Sline = Str$(newpointStX) & " " & Str$(newpointSTY) & " " & Resto

         
       Testo = Testo & Sline & gb.NewLine
       i = i + 1
       Print escludi
   End If
 loop1: 
   
Wend


intestazione = "ply\nformat ascii 1.0\nelement vertex " & Str$(i - 22)
intestazione = intestazione & "\nproperty float x\nproperty float y\nproperty float z\nproperty uchar diffuse_red\nproperty uchar diffuse_green\nproperty uchar diffuse_blue\nelement face 0\nproperty list uchar int vertex_indices\nend_header\n"
TextArea1.Text = intestazione & Testo
File.Save("/home/io/Scrivania/cloud_rot.ply", TextArea1.text)
:D

12
 :)

ecco, con questa modifica adesso funziona..

13
Il file cloud_new.ply è una semplice griglia di punti e contiene:

devo sistemare il contatore di righe pochè   element vertex  deve essere 99

Codice: [Seleziona]
ply
format ascii 1.0
element vertex 99
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
0,1 0,1 0,1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,2 128 128 128
0,1 0,1 0,3 128 128 128
0,1 0,1 0,4 128 128 128
0,1 0,1 0,5 128 128 128
0,1 0,1 0,6 128 128 128
0,1 0,1 0,7 128 128 128
0,1 0,1 0,8 128 128 128
0,1 0,1 0,9 128 128 128
0,1 0,1 1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,2 128 128 128
0,1 0,1 0,3 128 128 128
0,1 0,1 0,4 128 128 128
0,1 0,1 0,5 128 128 128
0,1 0,1 0,6 128 128 128
0,1 0,1 0,7 128 128 128
0,1 0,1 0,8 128 128 128
0,1 0,1 0,9 128 128 128
0,1 0,1 1 128 128 128
0,2 0,1 0,1 128 128 128
0,2 0,1 0,1 128 128 128
0,2 0,1 0,2 128 128 128
0,2 0,1 0,3 128 128 128
0,2 0,1 0,4 128 128 128
0,2 0,1 0,5 128 128 128
0,2 0,1 0,6 128 128 128
0,2 0,1 0,7 128 128 128
0,2 0,1 0,8 128 128 128
0,2 0,1 0,9 128 128 128
0,2 0,1 1 128 128 128
0,3 0,1 0,1 128 128 128
0,3 0,1 0,1 128 128 128
0,3 0,1 0,2 128 128 128
0,3 0,1 0,3 128 128 128
0,3 0,1 0,4 128 128 128
0,3 0,1 0,5 128 128 128
0,3 0,1 0,6 128 128 128
0,3 0,1 0,7 128 128 128
0,3 0,1 0,8 128 128 128
0,3 0,1 0,9 128 128 128
0,3 0,1 1 128 128 128
0,4 0,1 0,1 128 128 128
0,4 0,1 0,1 128 128 128
0,4 0,1 0,2 128 128 128
0,4 0,1 0,3 128 128 128
0,4 0,1 0,4 128 128 128
0,4 0,1 0,5 128 128 128
0,4 0,1 0,6 128 128 128
0,4 0,1 0,7 128 128 128
0,4 0,1 0,8 128 128 128
0,4 0,1 0,9 128 128 128
0,4 0,1 1 128 128 128
0,5 0,1 0,1 128 128 128
0,5 0,1 0,1 128 128 128
0,5 0,1 0,2 128 128 128
0,5 0,1 0,3 128 128 128
0,5 0,1 0,4 128 128 128
0,5 0,1 0,5 128 128 128
0,5 0,1 0,6 128 128 128
0,5 0,1 0,7 128 128 128
0,5 0,1 0,8 128 128 128
0,5 0,1 0,9 128 128 128
0,5 0,1 1 128 128 128
0,6 0,1 0,1 128 128 128
0,6 0,1 0,1 128 128 128
0,6 0,1 0,2 128 128 128
0,6 0,1 0,3 128 128 128
0,6 0,1 0,4 128 128 128
0,6 0,1 0,5 128 128 128
0,6 0,1 0,6 128 128 128
0,6 0,1 0,7 128 128 128
0,6 0,1 0,8 128 128 128
0,6 0,1 0,9 128 128 128
0,6 0,1 1 128 128 128
0,7 0,1 0,1 128 128 128
0,7 0,1 0,1 128 128 128
0,7 0,1 0,2 128 128 128
0,7 0,1 0,3 128 128 128
0,7 0,1 0,4 128 128 128
0,7 0,1 0,5 128 128 128
0,7 0,1 0,6 128 128 128
0,7 0,1 0,7 128 128 128
0,7 0,1 0,8 128 128 128
0,7 0,1 0,9 128 128 128
0,7 0,1 1 128 128 128
0,8 0,1 0,1 128 128 128
0,8 0,1 0,1 128 128 128
0,8 0,1 0,2 128 128 128
0,8 0,1 0,3 128 128 128
0,8 0,1 0,4 128 128 128
0,8 0,1 0,5 128 128 128
0,8 0,1 0,6 128 128 128
0,8 0,1 0,7 128 128 128
0,8 0,1 0,8 128 128 128
0,8 0,1 0,9 128 128 128
0,8 0,1 1 128 128 128
0,9 0,1 0,1 128 128 128
0,9 0,1 0,1 128 128 128
0,9 0,1 0,2 128 128 128
0,9 0,1 0,3 128 128 128
0,9 0,1 0,4 128 128 128
0,9 0,1 0,5 128 128 128
0,9 0,1 0,6 128 128 128
0,9 0,1 0,7 128 128 128
0,9 0,1 0,8 128 128 128
0,9 0,1 0,9 128 128 128
0,9 0,1 1 128 128 128
1 0,1 0,1 128 128 128
1 0,1 0,1 128 128 128
1 0,1 0,2 128 128 128
1 0,1 0,3 128 128 128
1 0,1 0,4 128 128 128
1 0,1 0,5 128 128 128
1 0,1 0,6 128 128 128
1 0,1 0,7 128 128 128
1 0,1 0,8 128 128 128
1 0,1 0,9 128 128 128
1 0,1 1 128 128 128
e questo meshlab lo apre..

14
Ok  ;D
come si conviene prima si dichiarano le variabili:
Ho cinquanta anni e la testa non funziona come a venti..
forse ho preteso troppo da me...(out of bounds)
 :-[

15
Ho provato anche con la danza...
Rien!

Codice: [Seleziona]
Public Sub Button11_Click()

   Dim alpha As Integer       'angolo
   Dim pointx As Float      'x point da spostare
   Dim pointy As Float     'y point da spostare
   Dim pointz As Float     'z point da spostare
   Dim Newpointx As Float
   Dim Newpointy As Float
   Dim Sinalpha As Float
   Dim Cosalpha As Float
  
   Dim NewpointStX As String
   Dim NewpointStY As String
  
   Dim X As Integer
   Dim Y As Integer
  
Dim i As Integer
Dim HFile As File
Dim Sline As String
Dim intestazione As String
Dim testo As String
Dim trap As Integer
Dim a As String
Dim aa As String[]
Dim j As Byte
Dim esclusivo As Integer
Dim escludi As String
Dim Resto As String

alpha = 72
HFile = Open "/home/io/Scrivania/cloud_new.ply" For Input

While Not Eof(hFile)


  Line Input #hFile, Sline
  
    trap = trap + 1
    If Trap < 13 Then Goto loop1
  
     a = Replace(Sline, "\n", " ")
     a = Replace(Sline, ".", ",")
     aa = Split(a, " ", "", True)

       escludi = aa[1]
       esclusivo = Val(escludi)
      
    
       If esclusivo > 20 Then 'Goto loop1
       SLine = ""
       Else
         '''''''''''''''''''''''''''''''''''''''''''''''
  
  pointx = Val(aa[0])
  pointy = Val(aa[1])
  
  X = InStr(Sline, " ") 'trovo il primo separatore
  Y = InStr(Sline, " ", X + 1) ' il secondo..
  
Resto = Mid$(Sline, (y + 1))
Resto = Replace(resto, ".", ",")

Sinalpha = Sin(alpha * (Pi / 180))
Cosalpha = Cos(alpha * (Pi / 180))

' qui ci andrà la traslazione

newpointx = (pointx * Cosalpha) - (pointy * Sinalpha)
newpointy = (pointx * Sinalpha) + (pointy * Cosalpha)
  

 NewpointStX = Format(newpointx, "-##.#####")
 Sline = Str$(newpointStX) & " " & Str$(newpointx) & " " & Resto
        
       Testo = Testo & Sline & gb.NewLine
       i = i + 1
  
   End If
 loop1:  
    
Wend
intestazione = "ply\nformat ascii 1.0\nelement vertex " & Str$(i - 6000)
intestazione = intestazione & "\nproperty float x\nproperty float y\nproperty float z\nproperty uchar diffuse_red\nproperty uchar diffuse_green\nproperty uchar diffuse_blue\nelement face 0\nproperty list uchar int vertex_indices\nend_header\n"
TextArea1.Text = intestazione & Testo
File.Save("/home/io/Scrivania/cloud_rot.ply", TextArea1.text)

End


Pagine: [1] 2 3