มีการเปลี่ยนแปลงของอัลกอริทึมของ BresenhamโดยJames Frithซึ่งน่าจะเร็วกว่านี้เพราะมันจะกำจัดการคูณอย่างสมบูรณ์ ไม่จำเป็นต้องใช้ตารางการค้นหาใด ๆ เพื่อให้บรรลุถึงสิ่งนี้แม้ว่าจะสามารถเก็บผลลัพธ์ไว้ในตารางได้หากรัศมียังคงที่ เนื่องจากทั้งอัลกอรึทึมของ Bresenham และ Frith ใช้สมมาตร 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 //