Ich habe netpbm Format ein paar Mal verwendet, wenn ich etwas Einfaches brauchte.
So habe ich herausgefunden, dass qsort()
(in meiner Implementierung und für die bereitgestellten Daten) eine Zusammenführung Sortierung durchführt!
qsort http://i37.tinypic.com/2rnwhnp.gif
Quellcode:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define ARRAY_SIZE 20
#define MAX_VALUE 10
unsigned char arr[ARRAY_SIZE];
void print_array(const void *left, const void *right) {
static int imgs = 0;
int k, j;
FILE *img;
char fname[100];
char rgb[100];
if (++imgs > 9999) return;
sprintf(fname, "img/img%04d.ppm", imgs);
/* create image in "img/" directory */
img = fopen(fname, "w");
if (img) {
fprintf(img, "P3\n%d %d\n255\n", ARRAY_SIZE, MAX_VALUE);
for (j=0; j<MAX_VALUE; j++) {
for (k=0; k<ARRAY_SIZE; k++) {
int colour = 0;
if (left && left == arr+k) colour = 2;
if (right && right == arr+k) colour = 2;
if (arr[k] == MAX_VALUE - j - 1) colour = 1;
switch (colour) {
default: sprintf(rgb, "%d %d %d", 255, 255, 255); break;
case 1: sprintf(rgb, "%d %d %d", 0, 0, 0); break;
case 2: sprintf(rgb, "%d %d %d", 255, 0, 0); break;
}
}
fprintf(img, "%s\n", rgb);
}
}
fclose(img);
} else {
perror("img fopen");
}
}
int cmp(const void *left, const void *right) {
const unsigned char a = *(const unsigned char*)left;
const unsigned char b = *(const unsigned char*)right;
print_array(left, right);
if (a < b) return -1;
if (a == b) return 0;
return 1;
}
int main(void) {
int k;
unsigned int seed = 0; /* or time(0) */
srand(seed);
for (k=0; k<ARRAY_SIZE; k++) {
arr[k] = rand() % MAX_VALUE;
}
print_array(NULL, NULL);
qsort(arr, (size_t)ARRAY_SIZE, sizeof *arr, cmp);
print_array(NULL, NULL);
/* use imagemagick to convert group of files to .gif */
system("convert -delay 0"
" img/img*.ppm"
" -loop 1 img/libc-qsort2.gif");
/* remove .ppm files */
system("rm img/" "*ppm"); /* ... my editor does not like a
slash and a star together,
even inside quotes */
return 0;
}
Welche Art von Grafiken?2D, 3D, beides? Wie wäre es mit Plattform? Windows, Linux, Mac, tragbar? – Aaron
Können Sie etwas genauer sein, was eine solche Bibliothek tun sollte? Bilder handhaben? Diagramme erstellen? 3D Modellierung? –
Gibt es etwas Spezielles, das Sie planen (z. B. Plotten und Graphen, Bildbearbeitung, Diagramme) oder nur allgemeine Grafiken? Werden Sie diese Grafiken auf dem Bildschirm anzeigen oder in einer Datei speichern? Benötigen Sie 2D-Grafiken oder 3D-Grafiken? – FrustratedWithFormsDesigner