जेम्स फ्रिथ द्वारा ब्रेसेनहैम के एल्गोरिथ्म की भिन्नता है , जो कि और भी तेज होनी चाहिए क्योंकि यह पूरी तरह से गुणन को समाप्त करता है। इसे प्राप्त करने के लिए किसी भी लुकअप तालिका की आवश्यकता नहीं है, हालांकि यदि त्रिज्या स्थिर रहती है तो कोई परिणाम तालिका में संग्रहीत कर सकता है। चूंकि ब्रेसेनहैम और फ्रिथ के एल्गोरिथ्म दोनों 8-गुना समरूपता का उपयोग करते हैं, इसलिए यह लुकअप तालिका अपेक्षाकृत कम होगी।
// FCircle.c - Draws a circle using Frith's algorithm.
// Copyright (c) 1996 James E. Frith - All Rights Reserved.
// Email: jfrith@compumedia.com
typedef unsigned char uchar;
typedef unsigned int uint;
extern void SetPixel(uint x, uint y, uchar color);
// FCircle --------------------------------------------
// Draws a circle using Frith's Algorithm.
void FCircle(int x, int y, int radius, uchar color)
{
int balance, xoff, yoff;
xoff = 0;
yoff = radius;
balance = -radius;
do {
SetPixel(x+xoff, y+yoff, color);
SetPixel(x-xoff, y+yoff, color);
SetPixel(x-xoff, y-yoff, color);
SetPixel(x+xoff, y-yoff, color);
SetPixel(x+yoff, y+xoff, color);
SetPixel(x-yoff, y+xoff, color);
SetPixel(x-yoff, y-xoff, color);
SetPixel(x+yoff, y-xoff, color);
balance += xoff++;
if ((balance += xoff) >= 0)
balance -= --yoff * 2;
} while (xoff <= yoff);
} // FCircle //