/***************************************************************************************/ // // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // /***************************************************************************************/ #include #include #include #include #include #include "Svga256.h" int huge DetectVGA256() { int Vid=4; return Vid; } void main(int argc, char *argv[]) { register double xmin, xmax, ymin, ymax, fact=1.0; register double ypy, x, y, x0, y0, xp, yp, const_scr=1.0; register double deltax, deltay, p, q, ya, r, xkp1, ykp1; register int npix=1024, npiy=768, kcolor; register int k, np, nq, ipen; char *endptr; int graphdriver=DETECT; int graphmode; p = strtod(argv[1],&endptr); q = strtod(argv[2],&endptr); xmin = strtod(argv[3],&endptr); xmax = strtod(argv[4],&endptr); ymin = strtod(argv[5],&endptr); ymax = strtod(argv[6],&endptr); kcolor = atoi(argv[7]); if(kcolor == 0) kcolor = 256; installuserdriver("Svga256",DetectVGA256); initgraph(&graphdriver, &graphmode, "c:\\borlandc\\bgi"); if(fact>=1.0 || fact <=0.0) fact = 1.0; else { npix = (int)(npix*fact); npiy = (int)(npiy*fact); } deltax = (xmax-xmin)/(double)(npix-1); deltay = (ymax-ymin)/(double)(npiy-1); cleardevice(); for (np=0; np<=npix-1; np++) { x0 = xmin + (double)np*deltax; for (nq=0; nq<=npiy-1; nq++) { y0 = ymin + (double)nq*deltay; x = x0; y = y0; k = 0; do { xkp1 = (x+y)*(x-y) + p; ya = x*y; ykp1 = ya + ya + q; r = xkp1*xkp1 + ykp1*ykp1; k++; if (r >= kcolor) { ipen = 30 + k; xp = const_scr*(double)np; yp = (double)nq; putpixel(xp,yp,ipen); } if (k == kcolor) { ipen = 1; xp = const_scr*(double)np; yp = (double)nq; putpixel(xp,yp,ipen); } x = xkp1; y = ykp1; } while (r <= kcolor && k<=kcolor); } if(kbhit()) break; } getch(); closegraph(); }