Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Echo
Člen
Avatar
Echo:26.1.2016 22:22

Čaute lidi potřeboval bych od vás pomoct mám dva časové průběhy viz. obrázek který přikládám a potřeboval bych aby u každého časového průběhu měla ta čára spodní hodnotu "0" a ta horní hodnotu "1" a poté je potřebuji mezi sebou nějakým stylem porovnávat(časové průběhy)

přikládám kód časového průběhu:

class prubeh_S //První průběh
    {

        public void render_S(Grid rodic, int sirka, int vyska)
        {
            Random random = new Random();
            int width = 0;
            int height = 2 * vyska;
            int count = 0;
            int i = 0;
            sirka += random.Next(1, 150);
            //for (int i = 0; i < rodic.ActualWidth; i++)
            while (width < rodic.ActualWidth)
            {
                if ((i % 2) == 0) //horní
                {
                    new line_S(rodic, width, height, width + sirka, height);
                    width += sirka;
                    height = vyska;


                }
                else //dolní
                {

                    new line_S(rodic, width, height, width, height + vyska);
                    count++;
                    if ((count % 2) == 0) height = 2 * vyska;


                }
                i++;

            }
        }
    }

Tu přikládám kód té čáry ze kterých je tvořen časový průběh:

public class line_S
    {
        public Line prubehCara;

        public line_S(Grid rodic, int textCaraX1, int textCaraY1, int textCaraX2, int textCaraY2)
        {
            prubehCara = new Line();
            rodic.Children.Add(prubehCara);

            prubehCara.X1 = textCaraX1;
            prubehCara.X2 = textCaraX2;
            prubehCara.Y1 = textCaraY1 + 25;
            prubehCara.Y2 = textCaraY2 + 25;


            SolidColorBrush barva = new SolidColorBrush();
            barva.Color = Colors.Black;

            prubehCara.StrokeThickness = 4;
            prubehCara.Stroke = barva;

            prubehCara.HorizontalAlignment = HorizontalAlignment.Left;
            prubehCara.VerticalAlignment = VerticalAlignment.Top;
        }

    }

Děkuji za každé rady.

 
Odpovědět
26.1.2016 22:22
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:26.1.2016 22:28

Pole? Nejdřív dát data do pole (polí), ty se můžou snadno porovnat. A podle pole, vytvořit obrázek průběhem...

Nahoru Odpovědět
26.1.2016 22:28
Čím víc vím, tím víc věcí nevím.
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Echo
ostrozan:26.1.2016 23:02

Přesně jak se píše v předešlé odpovědi - časový diagram tvoříš z nějakých dat (hodnot) - tak porovnávej ty a ne čáry z nich vzešlé.
Nejlépe vzorkováním - zjišťováním hodnot v jednotlivých průbězích v daném časovém intervalu.

 
Nahoru Odpovědět
26.1.2016 23:02
Avatar
Echo
Člen
Avatar
Echo:26.1.2016 23:36

Dříve jsem zkoušel něco takového:

private void Button_Click(object sender, RoutedEventArgs e) //Generace průbehů
        {
            lines = new List<line>();
            double[] values = new double[200];
            for (int i = 0; i < values.Length; i++)
                values[i] = random.NextDouble() * 2 - 1; //Generování náhodných hodnot

            const double height = 30;
            double stepWidth = Plocha.ActualWidth / (double)(values.Length - 1);

            double currX = 0;
            double centerY = 130;

            for (int i = 0; i < values.Length - 1; i++, currX += stepWidth)
            {
                lines.Add(new line(Plocha, (int)currX, (int)(centerY + (height * values[i])), (int)(currX + stepWidth), (int)(centerY + (height * values[i + 1]))));
            }
        }

Ale nedokázal jsem potom ten průběh usměrnit tak jak to mám bez toho pole a dělalo to tohle viz. obrázek.

Takže by mě stačilo, kdyby jste dokázali ty čáry nějak předělat aby to dělalo jak na tom prvním obrázku.
Ta line je stejná jako v předešlém kódu.

 
Nahoru Odpovědět
26.1.2016 23:36
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Echo
David Hynek:27.1.2016 16:11

jestli se nepletu tak černá čára je 0, nahoru to jde do plusu dolů k mínusu. Nevím co je pro tebe hranice, ale typuji, že je to ta nula. Tedy, každá hodnota nad nulou ať je jednička a každá pod nulou, nula. Jestli je to hodnota 0 - 255, tak "nulou", bude třeba hodnota 125. Jestli je hodnota 0 - 65536, tak "nulou" bude hodnota 32768. Atd. Obávám se, že se to snažíš vyřešit zbytečně složitě...

Nebo jsem nepochopil, o co se snažíš. :)

Nahoru Odpovědět
27.1.2016 16:11
Čím víc vím, tím víc věcí nevím.
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Echo
ostrozan:27.1.2016 19:30

No nic tak asi zpět ke kódu z úvodu.

Co vlastně myslíš pojmem hodnota "0" a **hodnota "1" ** ?

Chceš ji někde zobrazovat, nebo někam ukládat, nebo s tím dál pracovat?

jinak :

**"1" **= prubehCara.Y1
**"0" **= prubehCara.Y2

tak kde je problém?

a co se týká porovnávání, tak to bylo myšleno tak, že si zřídíš nějakou kolekci "Line" a do ní uložíš "čáru" vytvořenou (poněkud netradičně) konstruktorem třídy line_S (což je podle mně špatný přístup - na to by třída měla mít metodu)

List<Line> listLines = new List<Line>();

// po vykresleni cary
listLines.Add(prubehCara);  //to je ta tvoje nova cara

//no a pak muzes porovnavat -treba sirku pulsu:

if((listLines[0].X2 - listLines[0].X1)> (listLines[1].X2 - listLines[1].X1)
        {
                //neco
        }


else
        {
                //neco jineho
        }
 
Nahoru Odpovědět
27.1.2016 19:30
Avatar
Echo
Člen
Avatar
Echo:27.1.2016 19:43

Tou hodnotou "0" a "1" myslím jako to máš ve dvojkové soustavě, nebo-li true/false v boolean a pokud ti něco říká např. klopný obvod RS (časové průběhy), tak to míním nějak takhle a to konečné porovnávání bude zakresleno graficky časovým průběhem podle pravidel např. toho RS obvodu...jinak děkuji za radu, něco tam zkusím pošmelit :)

 
Nahoru Odpovědět
27.1.2016 19:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.